在vscode里用scanf读取txt文件内容报错


switch (choice) {
        case 1:
            printf("输入文件名\n");
            scanf("%s", filename);
            FILE* f;//文件
            f = fopen(filename, "r");//分配
            if (f == NULL) {
                printf("找不到文件\n");
                return 0;
                };//打不开
            char buf[100];//数组存储文件中读取的文本
            while (fgets(buf, 1024, f) != NULL)//读取文本到文件结束
            {
                Train train;
                int len = strlen(buf);//计算在buf中字符串的长度并存储在len
                if (buf[len - 1] == '\n')
                    buf[len - 1] = '\0';//buf中如果最后是换行字符就换成空字符。
                sscanf(buf, "%d", &train.n);//解析存储在buf中的整数值,存储在train,n
                for (int i = 0; i < train.n; i++) {
                    fgets(buf, 1024, f);
                    len = strlen(buf);
                    if (buf[len - 1] == '\n')
                        buf[len - 1] = '\0';
                    sscanf(buf, "%s", train.stations[i].name);
                }//循环读取路线上车站名称并存储
                fgets(buf, 1024, f);//读取文件中下一行文本
                len = strlen(buf);
                if (buf[len - 1] == '\n')
                    buf[len - 1] = '\0';
                sscanf(buf, "%d %d %d %d", &train.price, &train.time, &h, &m);
                train.time2 = h * 60 + m;//化分钟
                addTrain(train);//存储到数据结构
            }
            fclose(f);//关闭
            f = NULL;//去掉防止意外
            break;

这段代码里我在vscode和coderunner两个编译器里的效果不一样,在case1里面有一个文件导入的功能,我准备的txt文件和c文件是在同一个目录下的,我用coderunner可以成功读取文件里的内容,但是我用vscode会报错显示文件不存在,为什么会这样,是vscode没有配置好吗,怎么搞

输入完整路径试试。

设置VSCode的工作目录为C文件所在的目录