|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#define MAX 21
int main()
{
int space, i = 0;
char str[MAX];
printf("请输入一行文本是:");
while ((str[i++] = getchar()) != '\n')
{
/*
if (i >= MAX) // Q:当输入大于21字符时,不会获取‘\n’
{
break;
}
*/
if (str[i] == ' ' && i <= MAX) //记录空格位置
{
space = i;
}
};
printf("%d\n", i);
if (i >= MAX - 1) //当输入字符大于21时,使结尾断在离21最近的空格
{
str[space] = '\0';
}
if (i <= MAX) //当输入字符少于21时,可以正常输出
{
str[i + 1] = '\0';
}
printf("你输入的文本是:%s\n", str);
return 0;
}
问题1:当输入字符少于21时,输出会多出一行
eg:请输入一行文本是:fdssdfa
8
你输入的文本是:fdssdfa
�
问题2:当输入大于21字符时,输出不了
@Twilight6 @风车呼呼呼 @jackz007
本帖最后由 jackz007 于 2022-11-21 22:14 编辑
你的代码不完整,能不能把你的代码贴入代码框?
- #include <stdio.h>
- #define MAX 21
- int main()
- {
- int space , i , n ;
- char str[MAX] ;
- printf("请输入一行文本是:") ;
- for(n = 0 ; (str[n] = getchar()) != '\n' && n < MAX - 1 ; n ++) ;
- for(; n && str[n - 1] == ' ' ; n --) str[n - 1] = '\0' ;
- str[n] = '\0' ;
- if(n == MAX - 1) {
- for(i = n ; i && str[i - 1] != ' ' ; i --) ;
- if(i) str[i - 1] = '\0' ;
- }
- printf(" 你输入的文本是:%s\n" , str) ;
- }
复制代码
|
|