在不计算空格的情况下查找字符串的长度
Find Length of string without counting spaces
我正在编写程序来查找用户输入的字符串的长度。一切正常,但程序也计算空间。那么,如何在不计算空格的情况下找到字符串的长度?
- 使用正确的尺码类型
*(p + x)
=== p[x]
- 其中 p
是指针,x
是整型。你的两个功能完全一样。
- 使用有一定意义的名称
string_array
信息量不大,绝对不表示它返回不带空格的字符串的长度。
- 不要使用
gets
函数,因为它非常危险。使用限制放置在字符串中的字符数的函数。例如fgets
size_t strlenNoSpaces(const char * restrict c)
{
size_t length = 0;
for(; *c; c++)
{
if(*c != ' ') length++;
}
return length;
}
int main()
{
char string[30];
size_t length, i;
printf("Enter string: ");
fgets(string, 29, stdin);
length = strlen(string);
printf("\nLength of string using strlen.\n");
printf("Length of string %zu.\n", length);
length = strlenNoSpaces(string);
printf("\nLength of string not counting the spaces.\n");
printf("Length of string %zu.\n", length);
return 0;
}
我正在编写程序来查找用户输入的字符串的长度。一切正常,但程序也计算空间。那么,如何在不计算空格的情况下找到字符串的长度?
- 使用正确的尺码类型
*(p + x)
===p[x]
- 其中p
是指针,x
是整型。你的两个功能完全一样。- 使用有一定意义的名称
string_array
信息量不大,绝对不表示它返回不带空格的字符串的长度。 - 不要使用
gets
函数,因为它非常危险。使用限制放置在字符串中的字符数的函数。例如fgets
size_t strlenNoSpaces(const char * restrict c)
{
size_t length = 0;
for(; *c; c++)
{
if(*c != ' ') length++;
}
return length;
}
int main()
{
char string[30];
size_t length, i;
printf("Enter string: ");
fgets(string, 29, stdin);
length = strlen(string);
printf("\nLength of string using strlen.\n");
printf("Length of string %zu.\n", length);
length = strlenNoSpaces(string);
printf("\nLength of string not counting the spaces.\n");
printf("Length of string %zu.\n", length);
return 0;
}