初学C语言 Xcode scanf输入后出现11db什么原因

如题所述

整个程序很简单,下面是流程图
这个是主函数
#include <iostream>#include<stdlib.h>#include<stdio.h>#include<malloc.h>#include<string.h>#include"win.h" //启用各个启动窗口的函数库#include"blank.h" //打印空格使用的函数库//system("cls");//清屏函数using namespace std;void wrong_input();void open();char file_texts[10000];int main(){start:system("cls"); //清屏函数,为再次使用做准备FILE *fin=NULL; //为重新定义输入输出做准备 定义 开始标记win_boot(); //显示 启动窗口int choose_boot=0;while(scanf("%d",&choose_boot)!=EOF) //获取 用户输入值,并进行 判断{if(1==choose_boot||2==choose_boot) //若选择为“1"或者 "2",则 调用 win_choo1 函数{win_choo1();while((fin=fopen(addr_file,"a+"))==NULL){printf("打开文件错误,请检查您输入的路径.\n");printf("输入 1 退出\n");scanf("%s",addr_file);if(0==strcmp("1",addr_file))exit(0);} //打开文件,不存在 出错,并询问是否退出,如果 选择退出 则 退出char cgetc=0;while(!feof(fin)){cgetc=fgetc(fin);putchar(cgetc);} //输出 文件 中 原有的内容win_choodo(); //输出 选择窗口int choose_do=0; //定义 选择变量while(scanf("%d",&choose_do)!=EOF) //获取 选择代码{if(1==choose_do){fclose(fin);while((fin=fopen(addr_file,"w"))==NULL){printf("打开文件错误,请检查您输入的路径.\n");blank_choo();printf("输入 exit 退出\n");scanf("%s",addr_file);if(0==strcmp("exit",addr_file))exit(0);} //打开文件,不存在 出错,并询问是否退出,如果 选择退出 则 退出printf("\n\t****************************修改方法*****************************\n\t 右击窗口--标记--选中所有文本--按“Enter”--右击窗口--粘贴\n\t 移动光标修改数据(输入Ctrl + Z键后按回车结束)\n\t****************************修改方法*****************************\n");while((cgetc=getchar())!=EOF){fputc(cgetc,fin);} //将 输入的字符 保存到 文件 中,以EOF结束fclose(fin);printf("写入成功,选择“1”回主界面,选择“2“退出\n"); //输出选择界面while(scanf("%d",&choose_do)!=EOF){if(1==choose_do)goto start; //返回主界面else if(2==choose_do)exit(0); //退出else printf("输入有误,请重新输入选择!\n");}}else if(2==choose_do){printf("\n请输入您想添加的内容,若您想结束输入,请先按下ENTER (回车)键,再按下Ctrl + Z 键。\n");while((cgetc=getchar())!=EOF){fputc(cgetc,fin);} //将 输入的字符 保存到 文件 中,以EOF结束printf("写入成功,选择“1”回主界面,选择“2“退出\n"); //输出选择界面fclose(fin);while(scanf("%d",&choose_do)!=EOF){if(1==choose_do)goto start; //返回主界面else if(2==choose_do)exit(0); //退出else printf("输入有误,请重新输入选择!\n");getchar();}}else{blank_choo();printf("输入有误,请重新输入!\n");}}break;}else if(3==choose_boot) //若选择为“3”,则 退出{blank_head();exit(0);}else //如若输入不为前三个值 则 报错 并重新输入{wrong_input();}}return 0;}void wrong_input(){printf ("\n");blank_choo();printf("您输入了一个不存在的值! \n");blank_head();printf("请重新输入!:");}void open(){if((addr_file=(char*)calloc(10000,sizeof(char)))==NULL) //判断 分配空间 是否成功,不成功则 退出{printf("程序出错,请按任意键退出程序!");getchar();getchar();exit(0);}printf("文件路径:");scanf("%s",addr_file); //使用 指针 传递 文件地址,函数不必 返回 值}

blank.h 控制输出的空格,TC以后的都不支持图形函数,只好用这个将就了

#ifndef BLANK_H_INCLUDED#define BLANK_H_INCLUDED#include<stdio.h>#define NUM_BLANK 30#define NUM_LINE 23#define NUM_CHOO 18void blank_head(){for(int a=NUM_BLANK;a>=0;a--)printf(" ");}void blank_line(){for(int a=NUM_LINE;a>=0;a--)printf(" ");}void blank_choo(){for(int a=NUM_CHOO;a>=0;a--)printf(" ");}#endif // BLANK_H_INCLUDED

win.h 用来输出不同的窗口信息

#ifndef WIN_H_INCLUDED#define WIN_H_INCLUDED#include <iostream>#include<stdlib.h>#include<stdio.h>#include<malloc.h>#include"blank.h"//打印空格使用的函数库//system("cls");//清屏函数using namespace std;char *addr_file;//指针储存 文件路径 字符串void open();void win_boot(){printf("\n");blank_head();printf("请选择下列操作\n\n");blank_line();printf("1. 打开一个原有的文档\n\n");blank_line();printf("2. 新建一个空白文档\n\n");blank_line();printf("3. 退出\n\n");blank_choo();printf("请输入您的选择: ");}void win_choo1(){system("cls");//清屏函数blank_line();printf("请在下方输入您的文档的路径:\n");blank_choo();printf("例如: c:\\file\\test.txt (注意区分中英文)\n");blank_line();open();}void win_choodo(){blank_line();printf("您是想修改原有的文档还是在其之后添加新的内容:\n");blank_choo();printf("请输入您的选择:\n");blank_choo();printf("1:修改原有的文档:\n");blank_choo();printf("2: 添加新的内容:\n");blank_line();}#endif // WIN_H_INCLUDED
温馨提示:答案为网友推荐,仅供参考
相似回答