C语言 为什么程序在fscanf后崩溃



我正试图从fscanf文本文件读取数据,但readData函数程序崩溃后。它没有进入循环语句。在控制台中,只是读取打印数据。当我试图在main中读取数据时,它正在工作,但我需要在函数中读取。

#include <stdio.h>
#include <stdio.h>
void readData(int array[10][3]);
int main(void)
{
int data[10][3],i;

readData(data);

for(i=0; i<10; i++)
{
printf("%d %d %d n",data[i][0],data[i][1],data[i][2]);
}
}
void readData(array[10][3])
{
int i;

FILE *ptr = fopen("phonedata.txt","r");
if(ptr == NULL)
{
printf("There is no file");
}
else
{
printf("Data is read");
}

while(fscanf(ptr, "%d %d %d",&array[i][0],&array[i][1],array[i][2]) != EOF);
{
i++;
}
}

对于初学者来说,您忘记在函数定义中指定参数的类型

void readData(array[10][3])

你需要写

void readData(int array[10][3])

在函数中使用未初始化的变量i

int i;

你必须写

int i = 0;

还必须去掉while循环后面的分号

while(fscanf(ptr, "%d %d %d",&array[i][0],&array[i][1],array[i][2]) != EOF);

条件最好写成

while( i < 10 && fscanf(ptr, "%d %d %d",&array[i][0],&array[i][1],array[i][2]) == 3)

你需要把while循环放在else语句

else
{
printf("Data is read");
while( i < 10 && fscanf(ptr, "%d %d %d",&array[i][0],&array[i][1],array[i][2]) == 3)
{
i++;
}
}

你应该从函数中返回"行"填满。

并且在退出函数之前必须关闭文件。

fclose( ptr );

相关内容

  • 没有找到相关文章

最新更新