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文件所在的目录