guhusf 发表于 2021-1-22 22:10:29

请问一下这个程序为什么不能运行。没有报错

本帖最后由 guhusf 于 2021-1-22 22:20 编辑

具体问题是选择系统盘后,后续程序跳过了文件名称的输入,直接就是内容输入。如图。

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void BUILD_E()
{
FILE *fp;
char name,text;
char way = "e:\\";//设置路径为e盘
printf("请输入文件名称:\n");
gets(name);
strcat(name,".txt");//给文件名加上后缀
strcat(way,name);//添加路径
fp = fopen(way,"w");
printf("请输入内容:\n");
gets(text);
fputs(text,fp);
fclose(fp);
}
void BUILD_D()
{
FILE *fp;
char name,text;
char way = "d:\\";//设置路径为d盘
printf("请输入文件名称:\n");
gets(name);
strcat(name,".txt");//给文件名加上后缀
strcat(way,name);//添加路径
fp = fopen(way,"w");
printf("请输入内容:\n");
gets(text);
fputs(text,fp);
fclose(fp);
}
main()
{
        int a=0;
        printf("选择存储空间(对应序号):1.D盘;2.E盘\n");
        scanf("%d",&a);
        while (a!=1&&a!=2)
        {
                printf("请重新输入正确的序号!");
               scanf("%d",&a);
        }
        switch(a)
        {
                case 1:BUILD_D();
                break;
                case 2 :BUILD_E();
                break;
       }
       
}

风过无痕1989 发表于 2021-1-22 22:19:28

本帖最后由 风过无痕1989 于 2021-1-22 22:22 编辑

不函数的第38 行、第 42 行的 scanf("%d", a); 错误,没有取地址符 &

guhusf 发表于 2021-1-22 22:22:01

风过无痕1989 发表于 2021-1-22 22:19
不函数的第42行的 scanf("%d", a); 错误,没有取地址符 &

谢谢大佬,改了,但其他地方还有问题,在原帖里也改了。麻烦大佬再看一下

居家小男人≈ 发表于 2021-1-22 22:37:35

可以在printf("请输入文件名称:\n"); 语句后面加一个gets();试一试

风过无痕1989 发表于 2021-1-22 22:54:25

guhusf 发表于 2021-1-22 22:22
谢谢大佬,改了,但其他地方还有问题,在原帖里也改了。麻烦大佬再看一下

你这个程序想要实现你的要求,好像有点难。在 D 盘或者 E 下建立一个文本文件,然后再打开它,输出它,用这个方法好像是不行的。应该用文件操作的方法才行

guhusf 发表于 2021-1-22 23:00:23

居家小男人≈ 发表于 2021-1-22 22:37
可以在printf("请输入文件名称:\n"); 语句后面加一个gets();试一试

程序里有这个。还是不行

风过无痕1989 发表于 2021-1-22 23:15:03

guhusf 发表于 2021-1-22 23:00
程序里有这个。还是不行

其实你这个想法若用 windows 编程就简单了,只要调用 Windows API 函数 MoveFile ,一条语句就能实现

马邦浩 发表于 2021-1-23 15:30:36

后边加个getchar()空读
页: [1]
查看完整版本: 请问一下这个程序为什么不能运行。没有报错