|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么我的flag没有指向最后一个空格?
要求 A:定义一个长度为 21 的字符数组,用于存放用户输入的文本;PMrek&
要求 B:如果用户输入的文本长度超过 20 个字符,且文本中存在空格,则截取至最接近末尾(第 20 个字符串)的空格;A7?b@$g
要求 C:如果用户输入的文本长度超过 20 个字符,且文本中不存在空格,则打印前 20 个字符。qU
#include <stdio.h>
#define N 21
int main()
{
char s[21];
int i=0,flag=-1;
printf("请输入20个以上的字符串");
while((s[i++]=getchar())!='\n')
{
if(s[i]==' ')
{
flag=i;
}
}
printf("%d",flag);//check
if(flag==-1)
{
s[N-1]='\0';
}
else {
s[flag]='\0';
}
printf("截取以后的结果是:%s %d",s,i);
return 0;
}
本帖最后由 巴巴鲁 于 2020-9-8 11:10 编辑
先判定你输入了多少个字符,其它思路都一样
- #include <stdio.h>
- #define N 21
- int main()
- {
- char s[21];
- int i=0,flag=-1;
- printf("请输入20个以上的字符串:");
- while((s[i]=getchar())!='\n') // 这里不能使用i++
- {
- if(s[i] == ' ') // 使用i++后这里i会+1,而此时还没有输入下一个字符,怎么比?
- {
- flag=i;
- }
- i++;
- }
- printf("%d\n",flag);//check
- if(i < 20) // i = 19时相当于输入了20个字符
- {
- if(flag==-1)
- {
- s[i]='\0'; // 前面没有空格,在最后加'\0'
- }
- else
- {
- s[flag]='\0';
- }
- }
- else
- {
- if(flag==-1)
- {
- s[N-1]='\0';
- }
- else
- {
- s[flag]='\0';
- }
- }
-
- printf("截取以后的结果是:%s %d\n",s,i);
- return 0;
- }
复制代码
|
|