本帖最后由 jackz007 于 2022-10-6 21:39 编辑 #include<stdio.h>
#include<string.h>
int main()
{
char a[21] , b='\0', a1[21]="" ;
int e=0,d=0,c=0;
printf("请输入一行文本:");
while(b!='\n')
{
scanf("%s",a1) ; // 不可以用 scanf() 输入字符串,因为,会漏掉空格字符
strcat(a,a1) ; // 连接字符串有风险,当 strlen(a) + strlen(a1) > 20 的时候会使 a[] 越界。
b=getchar();
这样处理:#include <stdio.h>
int main(void)
{
char ch , a[21] ;
int i , k ;
for(k = 0 ; k < 20 && (ch = getchar()) != '\n' ;) a[k ++] = ch ; // 如果输入字符超过 20 个字符,那么,只接收 20 个字符,如果输入不到 20 个字符,那就以实际输入为准
for(a[k] = '\0' ; k && a[k - 1] == ' ' ; k --) a[k - 1] = '\0' ; // 删除 a[] 尾部所有的空格字符
if(k == 20) { // 如果剩余字符是 20 个,那就意味着需要把相距最近空格之后的所有字符删除掉
for(; k && a[k - 1] != ' ' ; k --) ; // 从尾部开始扫描空格字符
if(k) for(a[k - 1] = '\0' ; k && a[k - 1] == ' ' ; k --) a[k - 1] = '\0' ; // 如果 k 值不为 0 说明 a[k - 1] 就是空格,从这个位置开始向前,删除连续出现的所有空格字符
}
printf("%s\n" , a) ;
}
|