大佬们帮忙看一下这个题吧
要求 A:定义一个长度为 21 的字符数组,用于存放用户输入的文本;要求 B:如果用户输入的文本长度超过 20 个字符,且文本中存在空格,则截取至最接近末尾(第 20 个字符串)的空格;
要求 C:如果用户输入的文本长度超过 20 个字符,且文本中不存在空格,则打印前 20 个字符。
#include <stdio.h>
#include <string.h>
#define MAX 21 // 包含结束符就是21个字符
int main()
{
int ch, space, i = 0;
char str;
space = MAX - 1;
printf("请输入一行文本:");
while ((ch = getchar()) != '\n')
{
str = ch;
if (i == MAX - 1)
{
break; // 到了字符数组最后一个位置
}
if (ch == ' ')
{
space = i; // 记录最后一个空格的位置
}
}
if (i >= MAX - 1)
{
str = '\0';
}
else
{
str = '\0';
}
printf("你输入的文本是:%s\n", str);
return 0;
}
这段代码最后的那个if语句没看懂,i不是只能=MAX-1吗,求解答 你输入几个字符,i就等于几
这个if是看是否满足题目的后两个要求 巴巴鲁 发表于 2020-8-16 10:59
你输入几个字符,i就等于几
这个if是看是否满足题目的后两个要求
哦哦哦,懂了,就是看超过20个字符的那两个情况对吧 Christopher. 发表于 2020-8-16 11:08
哦哦哦,懂了,就是看超过20个字符的那两个情况对吧
对,你每次输入一个字符,i加以1
#include <stdio.h>
#include <string.h>
#define MAX 21 // 包含结束符就是21个字符
int main()
{
int ch, space, i = 0;
char str;
space = MAX - 1;
printf("请输入一行文本:");
while ((ch = getchar()) != '\n')
{
str = ch; // 每当输入一个非回车字符,i+1
if (i == MAX - 1)
{
break; // 到了字符数组最后一个位置
}
if (ch == ' ')
{
space = i; // 记录最后一个空格的位置
}
}
if (i >= MAX - 1) // 判定输入的字符数是否大于等于20(最后有一个'\0')
{
str = '\0';
}
else
{
str = '\0';
}
printf("你输入的文本是:%s\n", str);
return 0;
} 如果问题解决了,给个最佳吧{:10_256:} 巴巴鲁 发表于 2020-8-16 12:34
如果问题解决了,给个最佳吧
好的,对了大佬我还有个疑问,他的那个ch为什么定义为int型,那ch=getchar()这个是怎么实现的,不是很懂 Christopher. 发表于 2020-8-16 12:36
好的,对了大佬我还有个疑问,他的那个ch为什么定义为int型,那ch=getchar()这个是怎么实现的,不是很懂
我们通常都是用char定义字符,这样好理解
但是定义char不一定是字符型,也可能是整型,看你怎么用了,char和int只是取值范围不同
getchar()是输入一个字符,然后把输入的值赋给ch 巴巴鲁 发表于 2020-8-16 12:41
我们通常都是用char定义字符,这样好理解
但是定义char不一定是字符型,也可能是整型,看你怎么用了,cha ...
好的谢谢啦
页:
[1]