如何将文件中的字符转换为ascii整数到数组?

时间:2013-11-16 20:11:17

标签: c arrays io

我试图将一个字符和整数列表放入一个只有整数的数组中。 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++;

}    

2 个答案:

答案 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),因为数字可以作为字符串接收,但字符串不能作为数字接收。然后,对于每个输入,您需要确定字符串是否实际上是数字,然后相应地派生您想要放入数组的值。