我有一个充满这种格式数据的文本文件(这是3D图形编辑器.vox格式的输出)......
6 -13 8 eeeeec
13 -13 8 eeeeec
6 -12 8 eeeeec
6 -11 8 eeeeec
6 -10 8 eeeeec
1 -9 8 eeeeec
2 -9 8 eeeeec
3 -9 8 eeeeec
我正在使用以下代码将整数解析为数组...
#include<stdio.h>
int array[10000];
char *p;
int main()
{
FILE *ptr_file;
char buf[10];
ptr_file =fopen("AntAttackMap.txt","r");
if (!ptr_file)
return 1;
long index = 0;
while (fgets(buf,10, ptr_file)!=NULL)
{
p = strtok(buf, " ec");
while (p != NULL)
{
int num = atoi(p);
array[index]=num;
printf ("%d ",num);
p = strtok (NULL, " ec");
if (p != NULL) index++;
}
}
fclose(ptr_file);
printf("TOTAL %d, ",index);
return 0;
}
但是,输出在3位数之间有额外的零,如下所示:
6 -13 8 0 13 -13 8 0 6 -12 8 0 6 -11 8 0 6 -10 8 0 1 -9 8 0 2 -9 8 0 3 -9 8 0
有人可以解释为什么我会得到额外的数字吗?
提前致谢,
麦克
答案 0 :(得分:0)
你可以使用BUFSIZ常数, 实施例
char buf[BUFSIZ];
答案 1 :(得分:0)
不要使用atoi
来解析整数。唯一可靠的方法是strtoul
。然后,在代码中添加错误检查,你应该没问题。