为啥我这个运行会乱码
#include<stdio.h>#define MAX 1024
int main()
{
char ch;
char str1 ;
char str3 ;
int i=0,j=0,k=0,n=0;
printf("请输入一个英文句子:");
while(ch = getchar()!='\n')
{
str1 = ch;
}
while(str1!='\0')
{
if(str1!=' ')
{
str3 = str1;
}
else
{
str3 = str1;
while(str1 ==' ')
{
n++;
}
}
}
str3 = '\0';
for(i=0;i<j;i++)
{
printf("%c",str3);
}
return 0;
}
while(ch = getchar()!='\n')
{
str1 = ch;
}
这段代码有问题 ASCII 码
问题是:运算符优先级,赋值运算是最后执行的,所以每次ch得到的是1,转换成 ASCII 码后乱码
你改成一下代码就好了
while(1)
{
ch = getchar();
if (ch != '\n')
{
str1 = ch;
}
else
break;
}
最后完整代码
#include<stdio.h>
#define MAX 1024
int main()
{
char ch;
char str1 ;
char str3 ;
int i=0,j=0,k=0,n=0;
printf("请输入一个英文句子:");
while(1)
{
ch = getchar();
if (ch != '\n')
{
str1 = ch;
}
else
break;
}
while(str1!='\0')
{
if(str1!=' ')
{
str3 = str1;
}
else
{
str3 = str1;
while(str1 ==' ')
{
n++;
}
}
}
str3 = '\0';
for(i=0;i<j;i++)
{
printf("%c",str3);
}
return 0;
} while((ch = getchar() ) !='\n')
页:
[1]