为什么我的flag没有指向最后一个空格?
为什么我的flag没有指向最后一个空格?要求 A:定义一个长度为 21 的字符数组,用于存放用户输入的文本;PMrek&
要求 B:如果用户输入的文本长度超过 20 个字符,且文本中存在空格,则截取至最接近末尾(第 20 个字符串)的空格;A7?b@$g
要求 C:如果用户输入的文本长度超过 20 个字符,且文本中不存在空格,则打印前 20 个字符。qU
#include <stdio.h>
#define N 21
int main()
{
char s;
int i=0,flag=-1;
printf("请输入20个以上的字符串");
while((s=getchar())!='\n')
{
if(s==' ')
{
flag=i;
}
}
printf("%d",flag);//check
if(flag==-1)
{
s='\0';
}
else {
s='\0';
}
printf("截取以后的结果是:%s %d",s,i);
return 0;
}
#include <stdio.h>
#define N 21
int main()
{
char s;
int i=0,flag=-1;
printf("请输入20个以上的字符串:");
while((s=getchar())!='\n') // 这里不能使用i++
{
if(s == ' ') // 使用i++后这里i会+1,而此时还没有输入下一个字符,怎么比?
{
flag=i;
}
i++;
}
printf("%d\n",flag);//check
if(flag==-1)
{
s='\0';
}
else {
s='\0';
}
printf("截取以后的结果是:%s %d\n",s,i);
return 0;
} 巴巴鲁 发表于 2020-9-7 08:21
{:10_279:}谢谢啦,这个问题over了。
不过我想让程序可以输入小于20个的字符串(输入多少记录多少那种)总是在最后出现乱码能教教我吗{:10_258:}
代码就加了一个else if:
#include <stdio.h>
#define N 21
int main()
{
char s;
int i=0,flag=-1;
printf("请输入20个以上的字符串");
while((s=getchar())!='\n')
{
if(s==' '&&i<=20)
{
flag=i;
}
i++;
}
printf("%d",flag);
if(flag==-1)
{
s='\0';
}
else if(i<=21)
{
s='\0';//这里我想输入长度小于20的字符串
}
else {
s='\0';
}
printf("截取以后的结果是:%s",s);
getchar();
return 0;
}
greenery 发表于 2020-9-7 09:43
谢谢啦,这个问题over了。
不过我想让程序可以输入小于20个的字符串(输入多少记录多少那种) ...
这个问题解决的话给个最佳吧{:10_256:} 本帖最后由 巴巴鲁 于 2020-9-8 11:10 编辑
先判定你输入了多少个字符,其它思路都一样
#include <stdio.h>
#define N 21
int main()
{
char s;
int i=0,flag=-1;
printf("请输入20个以上的字符串:");
while((s=getchar())!='\n') // 这里不能使用i++
{
if(s == ' ') // 使用i++后这里i会+1,而此时还没有输入下一个字符,怎么比?
{
flag=i;
}
i++;
}
printf("%d\n",flag);//check
if(i < 20) // i = 19时相当于输入了20个字符
{
if(flag==-1)
{
s='\0'; // 前面没有空格,在最后加'\0'
}
else
{
s='\0';
}
}
else
{
if(flag==-1)
{
s='\0';
}
else
{
s='\0';
}
}
printf("截取以后的结果是:%s %d\n",s,i);
return 0;
} 问题还没有解决,帮你顶上去
页:
[1]