我对此代码感到头痛(sry 4 bad eng,我已经知道' bout危险的"得到"功能但仍想使用它) 我使用的是代码块, F9->类型' 1',输入 - >进度运行传递获取功能并且不允许我输入输入
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int ngat()//stop function
{
int thoat;
printf("\nNhap '1' de tiep tuc hoac '0' de thoat: ");//1:continue,0:exit
scanf("%d",&thoat);
switch(thoat)
{
case 1:main();
case 0:break;
}
}
void upper(char s1[])
{
int i=0;
while(s1[i]!='\0')
{
if (s1[i] >= 'a' && s1[i] <= 'z')
{
s1[i] = s1[i] - 32;
}
i++;
}
}
int main()
{
system("cls");
puts("1.Viet ham upper (doi ki tu sang ki tu hoa)\n2.Viet ham lower (doi ki tu sang ki tu thuong)\n3.Viet ham proper (doi ki tu dau sang ki tu hoa");
int sobai;
printf("\nNhap so cua bai: ");
scanf("%d",&sobai);
switch(sobai)
{
case 1:
{
system("cls");
char s1[255];
printf("\nViet ham upper (doi ki tu sang ki tu hoa)");//string upper function
printf("\nNhap xau:");//input string
gets(s1);
upper(s1);
printf("%s\n",s1);
ngat();
break;
}
}
}
答案 0 :(得分:0)
上面代码的问题是scanf()
读取整数并在缓冲区中留下换行符。所以gets()
只读取换行符,程序会忽略您期望的字符串。
如何解决这个问题?
scanf()
”使\n
读取新行,即
scanf(“%d\n”, &sobai)
。实际上scanf(“%d “, &sobai)
也有效(注意额外的
空间)。getchar()
之后添加scanf()
以阅读额外换行符。