请问大家,这里length为什么减1啊?减去的到底是什么呢
#include <stdio.h>#define MAX 1024
int main()
{
char str;
char *target = str;
int length = 0;
printf("请输入一个字符串:");
fgets(str, MAX, stdin);
while (*target++ != '\0')
{
length++;
}
printf("您总共输入了 %d 个字符!\n", length - 1);//这里为什么length-1啊
return 0;
} 最后的回车也是一个字符,要把它去掉。 楼上正解 2269099035 发表于 2020-10-20 12:58
最后的回车也是一个字符,要把它去掉。
是不是 fgets函数合法读取了printf("请输入一个字符串:");中的最后一个换行符'\0'并将它也作为一个字符参加接下来得while循环? 最后一个回车\0在字符串中也算一个字符,要去掉,当然要-1啦
求采纳{:10_256:} damon2009a 发表于 2020-10-20 19:19
最后一个回车\0在字符串中也算一个字符,要去掉,当然要-1啦
求采纳
是不是 fgets函数合法读取了printf("请输入一个字符串:");中的最后一个换行符'\0'并将它也作为一个字符参加接下来得while循环? 本帖最后由 damon2009a 于 2020-10-20 21:01 编辑
是不是 fgets函数合法读取了printf("请输入一个字符串:");中的最后一个换行符'\0'并将它也作为一个字符参加接下来得while循环?fgets函数的定义:C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。 当读取(n-1)个字符时 ,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。你可以参考fgets函数 黑眼睛 发表于 2020-10-20 19:21
是不是 fgets函数合法读取了printf("请输入一个字符串:");中的最后一个换行符'\0'并将它也作为一个字符 ...
你调用了fgets(),然后输入,输入最后会有一个回车'\n'。这个是算一个字符的。然后'\0'在这里不算字符。所以是-1
页:
[1]