如何形成一个数字数组,从C中的文件中获取输入

时间:2010-05-27 15:58:31

标签: c

程序应该能够从文本文件中创建一个数字数组,如下所示 数据如下 123 2132 1100909 3213 89890

我的代码是

char a;
char d[100];
char array[100];
a=fgetc(fp) // where fp is a file pointer 

if (a=='')
{
d[count1]='/0';
strcpy(&array[count],d);
count=count+1;
memset(d,'\0',100)
count1=0;
}

else 
{
d[count1]=a;
count1=count1+1;
}
a=fgetc(fp);

我现在正在分割错误。想要将每个数字存储在数组中,以便我可以对其进行排序

3 个答案:

答案 0 :(得分:2)

嗯......作为第一个近似值,要读取单个数字,请考虑使用fscanf("%d", &number);。要存储您阅读的数字,您可能需要创建一个数字数组(例如int numbers[100];)。要读取多个数字,请使用循环将数字读入数组。

旁注:fscanf并不特别容忍输入中的错误(以及其他内容),因此对于生产代码,您可能希望读取字符串,并解析其中的数字,但就目前而言,它看起来你可能只需要得到适合正确输入的东西,而不用担心优雅地处理错误的输入。

答案 1 :(得分:2)

你的(第一个)问题在这里:

d[count1]='/0';
strcpy(&array[count],d);

你写过'/0',这不是你想象的那样。假设您的意思是'\0'(空char字面值),那么您似乎在调用d之前尝试手动终止字符串strcpy()。问题是实际写入d的内容不是空字节,因此d不会以空值终止,然后strcpy()关闭并开始读取后续内存,并将该内存复制到array,直到读取或写入结束于您允许访问的内存之外,并且您会出现分段错误。

你也对array感到困惑。它被声明为100 char s的数组,但你把它当成一个字符串数组。也许您打算将其声明为char *array[100]

答案 2 :(得分:0)

这实际上是代码的编写方式吗?

d[count1]='/0';中,我认为你的意思是d[count1]='\0';(Daniel Pryden已经提到过)。

memset(d,'\0',100)

末尾还有一个分号丢失