我正在尝试读入一个包含由逗号操作的数字的文件,并将它们存储在一个没有逗号的数组中。
例如:processes.txt包含
0,1,3
1,0,5
2,9,8
3,10,6
一个名为 numbers 的数组应该如下所示:
0 1 3 1 0 5 2 9 8 3 10 6
我目前的代码是:
FILE *fp1;
char c; //declaration of characters
fp1=fopen(argv[1],"r"); //opening the file
int list[300];
c=fgetc(fp1); //taking character from fp1 pointer or file
int i=0,number,num=0;
while(c!=EOF){ //iterate until end of file
if (isdigit(c)){ //if it is digit
sscanf(&c,"%d",&number); //changing character to number (c)
num=(num*10)+number;
}
else if (c==',' || c=='\n') { //if it is new line or ,then it will store the number in list
list[i]=num;
num=0;
i++;
}
c=fgetc(fp1);
}
但是如果它是两位数,就会有问题。有没有人有更好的解决方案?谢谢!
最佳答案
对于逗号前没有空格显示的数据,您可以简单地使用:
while (fscanf(fp1, "%d,", &num) == 1 && i < 300)
list[i++] = num;
如果有一个,这将读取数字后面的逗号,如果没有,则静默忽略。如果数据中的逗号前可能有空格,请在格式字符串中的逗号前添加一个空格。 i
上的测试可防止您在 list
数组的范围之外进行写入。 ++
运算符在这里发挥作用。
关于C 读取由逗号分隔的数字文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55301438/