|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- 2 #include<string.h>
- 3 #define num 21
- 4 int main()
- 5 {
- 6
- 7 char str1[num];
- 8 int i=0;
- 9 _Bool flag=1;
- 10 printf("请输入一行文本:");
- 11 while((str1[i++] = getchar()) != '\n')
- 12 {
- 13 if(str1[i]==' ')
- 14 {
- 15 flag=0;
- 16 }
- 17
- 18 }
- 19 if(i<20)
- 20 {
- 21 printf("%s\n",str1);
- 22 }
- if(i>=20)
- 24 {
- 25 if(flag)
- 26 {
- 27 printf("HelloEveryone,I'm YourGoodFriend.\n");
- 28 }
- 29 else
- 30 {
- 31 printf("Hold on your hats.\n");
- 32 }
- 33 }
- 34 return 0;
- 35
- 36
- 37
- 38 }
复制代码
你的程序有两处错误。
- 1、while循环的条件中已经执行了 i++ while循环内的if语句应该判断的是str1[i-1],而不应该是str1[i]
- 2、执行完while循环后,字符串没有在结尾添加'\0',这样会导致printf %s的时候越界(%s是以'\0'判断结尾的),输出乱码,这是你的程序出现乱码的原因。
复制代码
- #include<stdio.h>
- #include<string.h>
- #define num 21
- int main()
- {
- char str1[num];
- int i=0;
- int flag=1;
- printf("请输入一行文本:");
- while((str1[i++] = getchar()) != '\n')
- {
- if(str1[i-1]==' ')
- {
- flag=0;
- }
- }
- str1[i-1]='\0';
- if(i<20)
- {
- printf("%s\n",str1);
- }
- if(i>=20)
- {
- if(flag)
- {
- printf("HelloEveryone,I'm YourGoodFriend.\n");
- }
- else
- {
- printf("Hold on your hats.\n");
- }
- }
- return 0;
- }
复制代码
|
|