Обучение программированию на C. Использовал учебник, чтобы научиться записывать данные случайным образом в файл произвольного доступа. Кажется, что учебник работает нормально. Однако вывод в файле Notepad: Jones Errol Ÿru "# e © A Jones Raphael Ÿru €€" Ü'A. Это не может быть правильно да? Вы знаете, почему цифры не показывают?Странно выглядящие символы в dat-файле?
Я понятия не имею, как правильно форматировать код. Всегда кто-то говорит мне, что это плохо. Я использую CTRL + K. И в моем компиляторе точно следуют книги. Извините, если это неверно. Может быть, вы можете сказать мне, как это сделать? Благодаря Вот код:
#include <stdio.h>
//clientData structure definition
struct clientData{
int acctNum;
char lastName[15];
char firstName[10];
double balance;
};
int main (void){
FILE *cfPtr;//credit.dat file pointer
//create clientData with default information
struct clientData client={0,"","",0.0};
if ((cfPtr=fopen("c:\\Users\\raphaeljones\\Desktop\\clients4.dat","rb+"))==NULL){
printf("The file could not be opened\n");
}
else {
//require user to specify account number
printf("Enter account number"
"(1 to 100, 0 to end input)\n");
scanf("%d",&client.acctNum);
// users enters information which is copied into file
while (client.acctNum!=0) {
//user enters lastname,firstname and balance
printf("Enter lastname,firstname, balance\n");
//set record lastName,firstname and balance value
fscanf(stdin,"%s%s%lf", client.lastName,
client.firstName, &client.balance);
//seek position in file to user specified record
fseek(cfPtr,
(client.acctNum-1)* sizeof (struct clientData),
SEEK_SET);
//write user specified information in file
fwrite(&client,sizeof(struct clientData),1,cfPtr);
//enable user to input another account number
printf("Enter account number\n");
scanf("%d",&client.acctNum);
}
fclose(cfPtr);
return 0;
}
Это похоже на то, что введенные строки меньше ширины поля. Например. lastName [15], но lastName на самом деле короче 15 .. остальные буквы появляются как мусор. Если это проблема, вам нужно выяснить, как связывать длину строки .. либо в datastructure clientData, либо с помощью строк с нулевым завершением (вы можете обрезать нуль при написании структуры данных). Например. см. http://stackoverflow.com/questions/10349842/how-does-c-know-the-end-of-my-string –
будет иметь вид thx. попытался ввести строки точно такой же ширины, но тот же результат –
Проблема с форматированием кода заключалась в отсутствии окончаний строк, я думаю .. просто было много пробелов? –