惨不忍睹,将就改一下,勉强可以运行
#include
#include
#include
char in[40]; //定义全局变量
char func[999]=""; //定义全局变量
int WhichFunc() //不符合返回-1
//D功能返回0
{
if(func[0]=='D')
return 0;
else return -1;
}
char *D(char DWhat)
{
int i;
for(i=0;i<= strlen(in);i++)
{
if(in[i]==DWhat)
{
in[i]=' '; //赋值用=,==是逻辑运算符
return in;
break;
}
}
printf("No Answer!\n");
}
int main()
{
//char in[40]; //重复定义,将你前面定义的全局变量作用域减少了一块
//char func[999]; //等于两个不同的变量,你想用全局变量来传递数值的目的泡汤了
printf("请输入一个字符串\n");
gets(in);
if(in[strlen(in)-1]!='.')
{
printf("[ERROR]结尾未找到句号!\n");
system("PAUSE");
return 0;
}
else
{
printf("请选择编辑功能:\nD:删除一个字符,命令的方式为:D a 其中a为被删除的字符\nI:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。\nR:替换一个字符,命令格式为:R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1,则应全部替换 \n");
gets(func);
//printf("%c",func[0]);
if(WhichFunc()== -1)
{
printf("未找到功能!\n");
system("PAUSE");
system("EXIT");
}
else if(WhichFunc()== 0)
{
printf("%s \n",D(func[2]));
system("PAUSE");
system("EXIT");
}
}
}
先让我看看 直播中
首先,不要用gets,这函数很坑爹。
C的字符串真是太那啥了,不妨用用c++的string。
然后,在输入部分,不要用gets,改用scanf,用char会好调试的多。
为什么你要在WhichFunc()中用指针……我要上编译器调试一下。
好的,我知道了,这是编译器中的结果:
*(func+0)=0 '\000' >>不出错才怪
让我看看怎么改
楼上差不多都说了,简单的一句话就是变量的作用域。深究就是基本功不扎实。
这种问题你如果真的”确信“就是”D",但是却return -1;
你为什么不在函数里面吧你所谓的“D"打印出来看看?经常所谓的认为,是错的。