(S1E19动手题2)为什么我输入小于20字的字符输出会换一行,但是输入大于20字的就不会?
#include <stdio.h>#include <string.h>
int main(void)
{
char str1;
char str2;
int i = 0,j = 0,space = 0,ddl = 0;
printf("请输入一行文本:");
while ((str1 = getchar()) != '\n')
;
str1 = '\0';
for (j = 19;j >= 0; j--)
{
if (str1 == ' ')
{
space = 1;
ddl = j;
break;
}
}
if (!(space))
{
strncpy(str2,str1,20);
str2 = '\0';
printf("你输入的文本是:%s",str2);
}
else
{
strncpy(str2,str1,ddl);
printf("你输入的文本是:%s",str2);
}
return 0;
}
printf("请输入一行文本:");
while ((str1 = getchar()) != '\n');
str1[--i] = '\0'; 本帖最后由 傻眼貓咪 于 2021-10-23 09:58 编辑
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1;
char str2;
int i = 0, j = 0, space = 0, ddl = 0;
printf("请输入一行文本:");
while ((str1 = getchar()) != '\n'); // 这里最后 i++
str1[--i] = '\0'; // 如上,这里 i 必须减一
for (j = 19; j >= 0; j--)
{
if (str1 == ' ')
{
space = 1;
ddl = j;
break;
}
}
if (!(space))
{
strncpy(str2, str1, 20);
str2 = '\0';
printf("你输入的文本是:%s", str2);
}
else
{
strncpy(str2, str1, ddl);
printf("你输入的文本是:%s", str2);
}
return 0;
}
页:
[1]