我有个问题。。。。。我有一个字符数组char命令[30]。当我使用它输入时,就像我输入一样!!在控制台上,输入后的strlength函数必须给我数组的长度等于2,因为它不计算null字符。但它给了我3作为数组的长度。为什么会发生这种事。
char command[30];
fgets(command,30,stdin);
printf("%zu",strlen(command));
它可能包括newline
字符-Enter
键。
尝试删除newine
字符,然后strlen应该如您所期望的那样:
command[strcspn(command, "n")] = 0;
fgets将换行符'\n'添加到您键入的字符中,并在字符串长度中添加一个额外字符。所以,如果你打字!!并点击";输入";,字符"!"、"!",和'\n',存储在命令[]数组中。因此,strlen((函数将字符串的长度返回为3,而不是2。要解决此问题,只需从strlen((函数的结果中减去1,并在'\n'所在的位置写入一个null零('\0'(。
#include <stdio.h>
#include <string.h>
int main(void)
{
char command[30];
printf("Enter text: ");
fgets(command, 30, stdin);
int length = strlen(command);
command[length - 1] = ' ';
printf("String length is %lun", strlen(command));
return 0;
}