关于数组的问题
本帖最后由 1613551 于 2022-11-2 16:13 编辑我想实现的是当输入的字符串不超过20个,而且有空格的话而字符串只会输出到最后一个空格,具体可以见图二
而为什么直接用数据下标判断是否等于' '的话好像根本不会执行?
如第二个程序的第13行,好像直接就跳过这步了... 具体可以见图一
“”题目要求图如2所示,
#include <stdio.h>
#include <stdlib.h>
#define MAX 1024
int main(void)
{
char a, ch;
int i = 0, num = 0;
printf("请输入一行文本:");
while (((ch = getchar()) != '\n') && i < 20)
{
a = ch;
i++;
if (ch == ' ')
{
num = i;
}
}
if (num)
{
i = num;
}
printf("您输入的文本:");
for (int ii = 0; ii < i; ii++)
{
printf("%c", a);
}
putchar('\n');
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define MAX 1024
int main(void)
{
char a, ch;
int i = 0, num = 0;
printf("请输入一行文本:");
while (((a = getchar()) != '\n') && i < 20)
{
i++;
if (a == ' ')
{
num = i;
}
}
if (num)
{
i = num;
}
printf("您输入的文本:");
for (int ii = 0; ii < i; ii++)
{
printf("%c", a);
}
putchar('\n');
system("pause");
return 0;
} 第12行 i++ 放错地方了,放在 if (a == ' ') 的后面就能实现了。 本帖最后由 jhq999 于 2022-11-2 18:12 编辑
如果出现前21个字符没有空格,而21个字符后面有空格怎么处理?
#include<stdio.h>
int main()
{
char s={0},lastspace=0;
scanf("%[^\n]",s);
s='\0';
int i=0;
for(i=0;s;i+=1)if(0x20==s)lastspace=i;
if(i==20&&lastspace)s='\0';
printf("%s",s);
return 0;
}
3120781247 发表于 2022-11-2 20:54
第12行 i++ 放错地方了,放在 if (a == ' ') 的后面就能实现了。
愣住...突然觉得我是智障.. jhq999 发表于 2022-11-2 18:11
如果出现前21个字符没有空格,而21个字符后面有空格怎么处理?
不是很理解你的问题,如果超过20个字符,后面的就不会取了 就这样,后面后面多少个空格都一样吧 1613551 发表于 2022-11-2 22:01
愣住...突然觉得我是智障..
我一开始也是这样,多思考就行!
页:
[1]