鱼C论坛

 找回密码
 立即注册
查看: 1112|回复: 7

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

[复制链接]
发表于 2021-1-22 22:10:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void BUILD_E()
{
FILE *fp;
char name[20],text[1024];
char way[20] = "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[20],text[1024];
char way[20] = "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;
         }
       
}
最佳答案
2021-1-22 23:15:03
guhusf 发表于 2021-1-22 23:00
程序里有这个。还是不行

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

红圈里的一起输出了

红圈里的一起输出了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-22 22:19:28 | 显示全部楼层
本帖最后由 风过无痕1989 于 2021-1-22 22:22 编辑

不函数的第38 行、第 42 行的 scanf("%d", a); 错误,没有取地址符 &
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢大佬,改了,但其他地方还有问题,在原帖里也改了。麻烦大佬再看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-22 22:37:35 | 显示全部楼层
可以在printf("请输入文件名称:\n"); 语句后面加一个gets();  试一试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你这个程序想要实现你的要求,好像有点难。在 D 盘或者 E 下建立一个文本文件,然后再打开它,输出它,用这个方法好像是不行的。应该用文件操作的方法才行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

程序里有这个。还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-22 23:15:03 | 显示全部楼层    本楼为最佳答案   
guhusf 发表于 2021-1-22 23:00
程序里有这个。还是不行

其实你这个想法若用 windows 编程就简单了,只要调用 Windows API 函数 MoveFile ,一条语句就能实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-23 15:30:36 | 显示全部楼层
后边加个getchar()空读
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 08:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表