字符串问题
题目是这样的:1. 按下边要求写程序
要求 A:定义一个长度为 21 的字符数组,用于存放用户输入的文本;
要求 B:如果用户输入的文本长度超过 20 个字符,且文本中存在空格,则截取至最接近末尾(第 20 个字符串)的空格;
要求 C:如果用户输入的文本长度超过 20 个字符,且文本中不存在空格,则打印前 20 个字符。
我的代码是这样的:
#include <stdio.h>
#include <string.h>
int main()
{
int i = 0;
char str1;
char str2;
printf("请输入一行文本:");
while((str1 = getchar()) != '\n')
;
if(strlen(str1) > 20)
{
str1 = '\0';
strncpy(str2,str1,20);
}
else
{
str1 = '\0';
strcpy(str2,str1);
}
printf("你输入的文本是:%s",str2);
return 0;
}
然后我发现没法实现要求2,可是在我调试的时候,我发现我的字符串结尾不能是空格,一旦是空格就会出现乱码,这是为什么呢,求大佬解答{:10_254:} strncpy 没有自动加上终止符的,需要手动加上不然会出问题的。
https://www.runoob.com/cprogramming/c-function-strncpy.html 本帖最后由 理想小青年 于 2021-7-28 14:04 编辑
楼上大佬意思表达,字符串需要加'\0',以0结尾; 理想小青年 发表于 2021-7-28 14:03
楼上大佬意思表达,字符串需要加'\0',以0结尾;
我16行有啊,而且我发现如果超过20个字符是,会打印两遍,这是为什么呢 心鲜旅人 发表于 2021-7-28 14:53
我16行有啊,而且我发现如果超过20个字符是,会打印两遍,这是为什么呢
#include <stdio.h>
#include <string.h>
int main()
{
int i = 0;
char str1;
char str2;
printf("请输入一行文本:");
while((str1 = getchar()) != '\n')
;
if(strlen(str1) > 20)
{
//str1 = '\0';
str2 = '\0';
strncpy(str2,str1,20);
}
else
{
str1 = '\0';
strcpy(str2,str1);
}
printf("你输入的文本是:%s",str2);
return 0;
}
页:
[1]