【发布时间】:2018-08-24 14:22:21
【问题描述】:
我在读取文件时遇到问题,循环外的第一次打印已正确完成。但在 for 循环内没有从文件中读取任何内容。 如果有人知道发生了什么,我正在寻找解释或帮助。 (假设文件中有 n*m 个字符串,由 "\t\r\n" 分隔) 谢谢。
{
char *file_name{
char *new_num=" ";
FILE *ifp=NULL;
int i, j, n, m;
ifp =fopen(file_name,"r");
if (ifp!=NULL)
{
fscanf(ifp,"%d %d",&n,&m );
printf("\n Data from the file: %d, %d \n",n,m);
}
for (i=0 ; i< n ;i++){
for(j=0;j<m;j++){
fscanf(ifp,"%s",new_num);
printf("\n new num : %s ",new_num);
}}
fclose(ifp);
return 0;
}
【问题讨论】:
-
这段代码还能编译吗?
-
请在我们查看之前修复格式并发布完整的代码...
-
您的程序写入字符串文字,因此它至少具有未定义的行为。
-
Post 缺少可编译的代码和示例输入以及预期的输出。提供这些可以使帖子更好。评论minimal reproducible example
-
关于:
ifp =fopen(file_name,"r"); if (ifp!=NULL)整体逻辑表示如果对fopen()的调用失败,则不要执行if()代码块内的代码` 到目前为止。然后,在if()代码块之后(不知道对fopen()的调用是否成功)代码尝试使用从fopen()返回的值(可能为NULL)来尝试访问一份文件。强烈建议调用fopen()后的第一条语句为: if( !ffp ) { perror( "fopen failed" );退出(EXIT_FAILURE); } // 暗示 else, fopen 成功`