|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#define MAX 1024
int main()
{
char ch;
char str1[MAX] ;
char str3[MAX] ;
int i=0,j=0,k=0,n=0;
printf("请输入一个英文句子:");
while(ch = getchar()!='\n')
{
str1[i++] = ch;
}
while(str1[n]!='\0')
{
if(str1[n]!=' ')
{
str3[j++] = str1[n++];
}
else
{
str3[j++] = str1[n++];
while(str1[n] ==' ')
{
n++;
}
}
}
str3[j] = '\0';
for(i=0;i<j;i++)
{
printf("%c",str3[i]);
}
return 0;
}
while(ch = getchar()!='\n')
{
str1[i++] = ch;
}
这段代码有问题 ASCII 码
问题是:运算符优先级,赋值运算是最后执行的,所以每次ch得到的是1,转换成 ASCII 码后乱码
你改成一下代码就好了
while(1)
{
ch = getchar();
if (ch != '\n')
{
str1[i++] = ch;
}
else
break;
}
最后完整代码
#include<stdio.h>
#define MAX 1024
int main()
{
char ch;
char str1[MAX] ;
char str3[MAX] ;
int i=0,j=0,k=0,n=0;
printf("请输入一个英文句子:");
while(1)
{
ch = getchar();
if (ch != '\n')
{
str1[i++] = ch;
}
else
break;
}
while(str1[n]!='\0')
{
if(str1[n]!=' ')
{
str3[j++] = str1[n++];
}
else
{
str3[j++] = str1[n++];
while(str1[n] ==' ')
{
n++;
}
}
}
str3[j] = '\0';
for(i=0;i<j;i++)
{
printf("%c",str3[i]);
}
return 0;
}
|
-
|