我试图将一个字符和整数列表放入一个只有整数的数组中。 file.txt看起来像是:
a 5 4 10
4 10 a 4
在数组中,我希望值为{97,5,4,10,4,10,97,4} 这是我的代码的一部分:
int * array = malloc(100 * sizeof(int));
FILE* file;
int i=0;
int integer = 1;
file=fopen(filename,"r");
while (fscanf(file,"%d",&integer) > 0)
{
array[i] = integer;
i++;
}
答案 0 :(得分:1)
你的问题是,在第一次阅读时,你的while条件会退出,因为文件中的第一个元素是一个char而fscanf不会将它解释为整数,返回0.我建议,如果您确定您的分隔符是空格,则读取字符串(它将自动在空格处停止)并使用strtol将读取值转换为int。
类似的东西:
int * array = malloc(100 * sizeof(int));
FILE* file;
int i=0;
char tmp[2], *pEnd;
file=fopen("./test.txt","r");
while (fscanf(file,"%s",tmp) > 0)
{
if( !(array[i] = strtol(tmp, &pEnd,10)))
array[i] = tmp[0];
i++;
}
请注意,我假设您没有大于一位数(tmp
数组大小)的整数,并且我检查strtol
响应以检测非整数字符。
答案 1 :(得分:0)
在我看来,你想要做的是使用fscanf("%s", some_string)
,因为数字可以作为字符串接收,但字符串不能作为数字接收。然后,对于每个输入,您需要确定字符串是否实际上是数字,然后相应地派生您想要放入数组的值。