jpan1221 发表于 2020-11-4 11:49:23

请问为什么这个C里面的fileI/O没法实现

一个较为简单的读取一个txt文档中的每一行
代码如下,但每次输入时总会显示“cannot open file" 而且我已经把commands.txt放进程序同一目录下,却还是如此,请大佬指正。
#include <stdio.h>
#include <string.h>

int main ()
{
    FILE *fp;
    int n = 0;
    char expression;

    // open the file
    if (!(fp = fopen("commands.txt","rt")))
    {
      printf("cannot open file!\n");
      return -1;
    }
    // read the file line by line
    do{
      if(fgets(expression, 256, fp))
      {
            // remove the '\n' if it exists
            if (expression == '\n')
                expression = '\0';
            // do whatever you want for the line
            printf("line %d: %s\n", ++n, expression);
      }
    }
    while(!feof(fp));
    fclose(fp);
    return 0;
}

风过无痕1989 发表于 2020-11-4 12:03:55

将 if (!(fp = fopen("commands.txt","rt"))) 改为:
    if((fp=fopen("commands.txt","rt"))==NULL) 试一下

jpan1221 发表于 2020-11-4 12:10:56

风过无痕1989 发表于 2020-11-4 12:03
将 if (!(fp = fopen("commands.txt","rt"))) 改为:
    if((fp=fopen("commands.txt","rt"))==NULL) 试 ...

好像还是不可以诶 还是“cannot open file!”

jackz007 发表于 2020-11-4 12:43:49

      这一句:
      if (!(fp = fopen("commands.txt","rt")))
      一定是错的!必须照 2 楼说的改,改过以后代码就没有问题了,如果再说找不着文件,那问题就是,文件一定不存在。

jpan1221 发表于 2020-11-4 13:25:56

jackz007 发表于 2020-11-4 12:43
这一句:

      一定是错的!必须照 2 楼说的改,改过以后代码就没有问题了,如果再说找不着 ...

如图

风过无痕1989 发表于 2020-11-4 13:29:22

jpan1221 发表于 2020-11-4 12:10
好像还是不可以诶 还是“cannot open file!”

这样,你将 commands.txt 文件放到C盘根目录下,试一下我这个程序:


#include <stdio.h>
#include <string.h>

int main ()
{
    FILE *fp;
    int n = 0;
    char expression;

    // open the file
    if((fp=fopen("c:\\commands.txt","rt"))==NULL)
    {
      printf("cannot open file!\n");
      return -1;
    }
    // read the file line by line
    do{
      if(fgets(expression, 256, fp))
      {
            // remove the '\n' if it exists
            if (expression == '\n')
                expression = '\0';
            // do whatever you want for the line
            printf("line %d: %s\n", ++n, expression);
      }
    }
    while(!feof(fp));
    fclose(fp);
    return 0;
}

风过无痕1989 发表于 2020-11-4 13:37:07

jpan1221 发表于 2020-11-4 13:25
如图

你5楼发的图片中,if((fp=open(_filename: "commands.txt", _Mode: "rt"))==NULL) 多了红色部份的东西,将它们去掉

jpan1221 发表于 2020-11-4 14:02:48

风过无痕1989 发表于 2020-11-4 13:37
你5楼发的图片中,if((fp=open(_filename: "commands.txt", _Mode: "rt"))==NULL) 多了红色部份的东西, ...

嗯,可以了谢谢 红色部分应该是clion编译器自动附上的注释,去不了
页: [1]
查看完整版本: 请问为什么这个C里面的fileI/O没法实现