程序怎么循环起来执行??
int main(int argc, char *argv[]){char ch,c;
int i,flag=1;
while(flag){ //这个while循环在,输入Y后怎么下面不让输入新的字符串了??
printf("请输入一个字符串:\n");
i=0;
while((c=getchar())!='\n'){
ch=c;
i++;
}
ch='\0';
printf("%s\n",ch);
for(i=0;ch!='\0';i++){
if(ch>='A'&&ch<='Z') ch=26-(ch-'A'+1)+'A';
else if(ch>='a'&&ch<='z') ch=26-(ch-'a'+1)+'a';
}
printf("转换结果为:\n");
printf("%s\n",ch);
printf("continue or not(Y/N)?:\n");
c=getchar();
if(c=='n'||c=='N')
flag=0;
}
return 0;
}
当执行完"continue or not(Y/N)?:\n语句后,不让输入字符串,直接出结果了。。 用scanf呗 qiuyouzhi 发表于 2020-3-8 14:30
用scanf呗
效果和getchar一样。第二次循环时还是不行 雪枫2020 发表于 2020-3-8 14:53
效果和getchar一样。第二次循环时还是不行
给你i简单改了改,
你要实在不行就把询问的跳过去吧,把条件放在输入的地方
#include <stdio.h>
#include <string.h>
int main(void){
char ch,c;
int i,flag=1;
while(flag){ //这个while循环在,输入Y后怎么下面不让输入新的字符串了??
Begin:printf("请输入一个字符串:\n");
i=0;
scanf("%s", ch);
printf("%s\n",ch);
for(i=0;ch!='\0';i++){
if(ch>='A'&&ch<='Z') ch=26-(ch-'A'+1)+'A';
else if(ch>='a'&&ch<='z') ch=26-(ch-'a'+1)+'a';
}
printf("转换结果为:\n");
printf("%s\n",ch);
printf("continue or not(Y/N)?\n");
getchar()
;
if(c=='n'|| c=='N')
flag = 0;
else
goto Begin;
}
return 0;
} qiuyouzhi 发表于 2020-3-8 15:08
给你i简单改了改,
你要实在不行就把询问的跳过去吧,把条件放在输入的地方
还是不行,但是我在询问语句中getchar和scanf同时用就用可以了,,不懂问什么??你编译上面的代码时正常吗?我的编译器是DEV-C++
int main(int argc, char *argv[]){
char ch,c;
int i,flag=1;
while(flag){
begin:printf("请输入一个字符串:\n");
i=0;
scanf("%s",ch);
printf("%s\n",ch);
for(i=0;ch!='\0';i++){
if(ch>='A'&&ch<='Z') ch=26-(ch-'A'+1)+'A';
else if(ch>='a'&&ch<='z') ch=26-(ch-'a'+1)+'a';
}
printf("转换结果为:\n");
printf("%s\n",ch);
printf("continue or not(Y/N)?:\n");
c=getchar();
scanf("%c",&c);
if(c=='n'||c=='N')
flag=0;
}
return 0;
} #include <stdio.h>
int main(int argc, char *argv[])
{
char ch, c;
int i, flag = 1;
while (flag)
{
//这个while循环在,输入Y后怎么下面不让输入新的字符串了??
printf("请输入一个字符串:\n");
i = 0;
while ((c = getchar()) != '\n')
{
ch = c;
i++;
}
ch = '\0';
printf("%s\n", ch);
for (i = 0; ch != '\0'; i++)
{
if (ch >= 'A' && ch <= 'Z')
ch = 26 - (ch - 'A' + 1) + 'A';
else if (ch >= 'a' && ch <= 'z')
ch = 26 - (ch - 'a' + 1) + 'a';
}
printf("转换结果为:\n");
printf("%s\n", ch);
printf("continue or not(Y/N)?:\n");
c = getchar();
getchar(); //加入一个getchar()将你输入Y的时候按得那个回车符读取并丢弃掉,不然那个回车会被内层while中的getchar()读取到,相当于你输入了一个空的字符串
if (c == 'n' || c == 'N')
flag = 0;
}
return 0;
} 要把输入缓冲buffer里面的数据清干净,下面的程序是修改之后的,可以解决你的问题。请注意fflush的使用
#include <stdio.h>
int main(int argc, char *argv[]){
char ch,c;
int i,flag=1;
while(flag){ //这个while循环在,输入Y后怎么下面不让输入新的字符串了??
printf("请输入一个字符串:");
i=0;
fflush(stdin);
while((c=getchar())!='\n'){
ch=c;
i++;
}
ch='\0';
printf("%s\n",ch);
for(i=0;ch!='\0';i++){
if(ch>='A'&&ch<='Z') ch=26-(ch-'A'+1)+'A';
else if(ch>='a'&&ch<='z') ch=26-(ch-'a'+1)+'a';
}
printf("转换结果为:\n");
printf("%s\n",ch);
printf("continue or not(Y/N)?:");
c=getchar();
if(c=='n'||c=='N')
flag=0;
}
return 0;
}
页:
[1]