У меня есть это как мои структурыPrintf не печатает правильный номер
struct theFile{
int count;
FILE *fPointer;
int *fileItems[];
}myFile;
Это мой метод, который сохраняет файл в fileItems. Он правильно сохраняет номера. Например fileItems[0] = 5
, fileItems[1] = 45
, fileItems[2] = 35
void saveFile(){
myFile.fPointer = fopen("mileage.txt", "r");
int i = 0;
while (!feof(myFile.fPointer)){
myFile.fileItems[i] = (int*)malloc(sizeof(int));
fscanf(myFile.fPointer, " %d,", myFile.fileItems[i]);
i++;
}
myFile.count = i;
}
, но когда я иду, чтобы распечатать содержимое файла с помощью этого метода он будет напечатан первый номер правильно, но тогда он будет печатать остальное в больших количествах. Может кто-то, пожалуйста, скажите мне, почему он не печатает правильное содержимое массива.
void viewFile(){
for(int i = 0; i < myFile.count; i++){
printf("%d, ", myFile.fileItems[i]);
}
}
также обратите внимание, в настоящее время написано в c.
'fileItems' - это массив указателей, поэтому вам придется разыгрывать его дважды. В предположении: '& (myFile.fileItems [i])'. – Evert
Но увидев ваше использование 'fileItems', вам лучше объявить' fileItems' как целочисленный массив: 'int * fileItems'. Затем измените свои 'malloc' и' fscanf' соответственно. – Evert
любая причина, по которой вы проверяете успех 'fopen()' или 'malloc()'? BTW, пожалуйста, [не использовать] (http://stackoverflow.com/q/605845/2173917) возвращаемое значение 'malloc()'. –