我有一个包含一组数字的文件。 我试图将这些数字读入数组。我使用指针为该数组分配内存,并从文件读取到该位置。 由于某种原因,该程序不会从文件中读取超过5个值。
int main(int argc, char* argv[] )
{
int i=0, count=0;
//unsigned long int num[1000];
unsigned long int *ptr;
ptr = (unsigned long int*) malloc (sizeof(unsigned long int));
char file1[30], file2[30];
int bin[1000][32];
int ch;
argv++;
strcpy(file1,*argv);
FILE *fp;
fp=fopen(file1, "r");
while((fscanf(fp,"%ld",ptr))==1)
{
ptr++;
count++;
}
ptr=ptr-count;
for(i=0; i<count;i++,ptr++)
printf("%ld\n",*ptr);
return 0;
}
输入文件包含以下内容:
1206215586
3241580200
3270055958
2720116784
3423335924
1851806274
204254658
2047265792
19088743
输出就是这样:
1206215586
3241580200
3270055958
2720116784
3423335924
提前致谢。
答案 0 :(得分:2)
您需要分配足够的空间来存储整数。为此,请使用原始指针上的realloc
函数。
您编写ptr++
这一事实使得在原始指针上调用realloc
并保存结果变得尴尬。因此,最好不要使用ptr++
。相反,您可以使用ptr[count]
并让ptr
始终指向分配的开头。
例如,主循环可以是:
while((fscanf(fp,"%lu",&ptr[count]))==1)
{
count++;
void *new = realloc(ptr, (count+1) * sizeof(*ptr));
if ( !new )
break; // maybe print error message, etc.
ptr = new;
}
// don't do this any more
// ptr=ptr-count;