我試圖把文件中的所有信息放入一個數組,然後我已經循環遍歷該文件以查看該文件有多少行。如果我把文件的一行看起來似乎起作用,但是,如果我在文件返回時將數組位置設置爲文件行,然後打印該數組,則數字會與應該出現的方式不同。從文件輸入到C中的數組,在eof
這是我的代碼。
int main()
{
//Opens File
char fName[20];
// fName = getchar();
scanf("%s", fName);
FILE *fpIn;
fpIn = fopen (fName, "rt");
// fpIn = fopen("test1.txt", "rt");
if (fpIn == NULL)
{
printf("Unable to open: ");
exit(99);
}
//Gets Lines
int lines=0;
char ch;
while((ch=fgetc(fpIn))!=EOF)
{
if (ch=='\n') { lines++; }
}
clearerr(fName *fpIn);
fclose(fpIn);
fopen(fName, "rt");
//Makes Array
int *pA;
pA = (int *)malloc(lines*sizeof(int));
//Fills Array
for (int i=0; i<lines; i++)
{
while ((ch=fgetc(fpIn))!='\n')
{
pA[i] = ch;
}
ch=fgetc(fpIn);
}
for (int i=0; i<lines; i++)
{
printf("%d\n", pA[i]);
}
return 0;
}
那麼我需要一個二維數組呢?我想我不確定爲什麼這是有道理的,因爲它們都是數字。 我已經修改它看起來像這樣; ((ch = fgetc(fpIn))!='\ n') pA [i] = putchar(ch); } ch = fgetc(fpIn); 現在它將正確的值寫入屏幕,並且該數組仍然填滿了平行數字,這些數字甚至不匹配最後幾行的內容。 – aprohl5
@ aprohl5:你可能會在數字和字符之間感到困惑。你的輸入文件是什麼樣的? –
最初它是一個浮點數的列表。但我認爲同樣的事情,所以我把文件轉換爲數字1-9的列表,並且我遇到了同樣的問題。 – aprohl5