gpt4 book ai didi

c - 为什么这个计算字符串长度的 C 程序会给出错误的输出?

转载 作者:行者123 更新时间:2023-12-05 08:21:41 25 4
gpt4 key购买 nike

我编写了这个程序,它接受一个 string 作为输入并返回它的长度。

#include<stdio.h>
#include<string.h>
#define MAX 100

int main()
{
char a[MAX];
int len;
printf("Enter a string: ");
fgets(a, MAX, stdin);

len = strlen(a);
printf("Length of the string = %d", len);

return 0;
}

由于函数 strlen() 不计算空字符,即 '\0',为什么我的输出总是比输入 的字符多 1字符串?

例如-

Enter a string: Aryan
Length of the string = 6
Process returned 0 (0x0) execution time: 4.372 s
Press any key to continue.

最佳答案

如果提供的数组中有空格,函数 fgets 可以将换行符 '\n' 添加到输入的字符串中。

来自 C 标准(7.21.7.2 fgets 函数)

2 The fgets function reads at most one less than the number ofcharacters specified by n from the stream pointed to by stream intothe array pointed to by s. No additional characters are read after anew-line character (which is retained) or after end-of-file. A nullcharacter is written immediately after the last character read intothe array

因此在 strlen 的调用中

len = strlen(a);

换行符也算在内。

你需要删除它,例如

a[ strcspn( a, "\n" ) ] = '\0';

char *p = strchr( a, '\n' );
if ( p != NULL ) *p = '\0';

关于c - 为什么这个计算字符串长度的 C 程序会给出错误的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70798117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com