S1E19按要求打印字符串
#include <stdio.h>#include <string.h>
#define LENGTH 21
int main()
{
char s;
int i = 0, j, space = 0;
// unsigned int k;
printf("请输入一行文本:");
while ((s = getchar()) != '\n')
{
;
}
getchar();
for (i = 0;i < strlen(s);i++)
{
if (s == ' ') //判断是否有空格,\n是换行符
{
space = 1;
j = i;
}
}
printf("输入字符串长度是:%d\n",strlen(s));
return 0;
}
求教为什么strlen()求出的字符串长度是9,输入的是6 #include <stdio.h>
#include <string.h>
#define LENGTH 21
int main()
{
char s;
int i = 0, j, space = 0;
// unsigned int k;
printf("请输入一行文本:");
while ((s = getchar()) != '\n')
{
;
}
//getchar();
s='\0'; //////////////////////////////
for (i = 0;i < strlen(s);i++)
{
if (s == ' ') //判断是否有空格,\n是换行符
{
space = 1;
j = i;
}
}
printf("输入字符串长度是:%d\n",strlen(s));
return 0;
} strlen() 遇到空字符 '\0' 才会停止计数
我的电脑上运行的结果也是错误的,按照 2 楼加了一行代码:
getchar();
运行结果正确了
#include <string.h>
#include <Windows.h>
#define LENGTH 21
int main()
{
char s;
int i = 0, j, space = 0;
// unsigned int k;
printf("请输入一行文本:");
while ((s = getchar()) != '\n')
{
;
}
getchar();
s = '\0';
for (i = 0; i < strlen(s); i++)
{
if (s == ' ') // 判断是否有空格,\n是换行符
{
space = 1;
j = i;
}
}
printf("输入字符串长度是:%d\n", strlen(s));
system("pause");
return 0;
}
Cardist 发表于 2021-9-16 19:06
strlen() 遇到空字符 '\0' 才会停止计数
我的电脑上运行的结果也是错误的,按照 2 楼加了一行代码:
我试了一下,不加getchar(),也可以正常运行的 雨中漫步~ 发表于 2021-9-16 19:43
我试了一下,不加getchar(),也可以正常运行的
抱歉,我手抖复制错了,加的那行代码应该是 getchar(); 下面那行,在输入的字符存入到数组后,在最后加一个空字符:
s = '\0';
页:
[1]