[英]C Reading numbers from file into array
嘿,即时通讯试图从文本文件中读取数字并将它们放入数组中,但是我在尝试打印它们时却得到了奇怪的数字。 文本文件如下所示:
45
77
8
...
我猜我使用的循环有问题,但是我似乎找不到答案。 谢谢你的帮助!
码:
#define MAX_ARRAY_SIZE 20
int main(int argc, char * argv[])
{
FILE *myFile;
int myArray[MAX_ARRAY_SIZE];
//char filename[32];
//printf("enter filename\n");
//scanf("%s", filename);
myFile = fopen("asdf.txt", "r");
if (!myFile) {
printf("cant open file\n");
return 1;
}
int status;
int i = 0;
while ((status = fscanf(myFile, "%2d", &myArray[i])) == 1 && i < MAX_ARRAY_SIZE - 1) {
++i;
}
fclose(myFile);
int a;
for (a = 0; i < MAX_ARRAY_SIZE; ++i) {
printf("%d ", myArray[i]);
}
printf("\n");
return 0;
}
尝试这个
while ((status = fscanf(myFile, "%d\n", &myArray[i])) == 1 && i < MAX_ARRAY_SIZE - 1) {
++i;
}
问题出在您的打印循环中:
for (a = 0; i < MAX_ARRAY_SIZE; ++i)
无法保证您正在读取MAX_ARRAY_SIZE
值。 另外,如果您使用'a'
作为循环迭代器,则需要使用'a'
。 您的循环应为:
for (a = 0; a < i; ++a)
printf("%d ", myArray[a]);
您也不需要格式说明符中的字段宽度, fscanf(myFile, " %d", &myArray[i]))
就可以了。
是的...我还没有看到打印循环代码。 问题在打印循环中而不是fscan,请忽略我的回答
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.