一个程序的问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 07:13:50
#include "stdio.h"
int c;
main()
{
char *s,*p,*search();
char ch;

printf("please input a string");
scanf("%[^\n]s",s);
printf("please input the letter you want search");
ch=getchar();//为什么此句不执行了?,但是如果换成gets(s);
//则会执行成功
p=xy(s,ch);
if(p)
printf("%s",p);
else
printf("no search");

}
char *search(char *s,char ch)
{
c=0;
while(ch!=s[c]&&s[c]!='\0')
c++;
if(s[c])
return(&s[c]);
else
return 0;
}
问题是这个样子的,当使用scanf(“%s%",s)的时候,输入字符串回车后程序根本就不等待用户输入要查询的字符ch,而是直接执行完毕;相反的如果用gets(s),输入字符串后回车,程序则会等待用户输入想查询的字符ch,程序也会找到相应的字符。(注:1.程序的目的是找到用户输入的字符并输出这个字符以后的字符串,比如:用户输入"string",查询字符为t,则程序输出结果为"tring",查询不到则输出“no search".但是用scanf读入字符串回车后,程序直接给出结果"no search!",用gets的话则可以正常执行.2.程

getch()会是进程阻塞来等待用户操作输入一个字符

所以程序到这里就停住了 只要在控制台输入一个字符并回车就可以继续执行了
没看完你的程序,所以逻辑不保证正确