计算字符串中的所有字符但空格

时间:2013-11-20 02:52:39

标签: c

如何计算字符串中的字符总和,不包括空格?!我写了一个代码,但它也计算空格。有什么建议?这就是我所拥有的:

void main()
{
char str[100];
int len, space;

printf( "Enter string:\n ");
printf("\n");
gets(str);

len = strlen(str);

printf("\n");
printf("\n No.of characters in string is %d " , len );

getch();
}

2 个答案:

答案 0 :(得分:1)

对于简单空格,请尝试此

len = strlen(str);
int nchar = 0
for(int i = 0; i != len; i++) {
   if(str[i] != ' ') {
       nchar++;
   }
}
printf("nchar = %d\n", nchar);

对于所有空格(空格,制表符,换行符),请尝试以下操作:

#include <ctype.h> // this line must be in the top of the file
len = strlen(str);    
int nchar = 0;
for(int i = 0; i != len; i++) {
   if(!isspace(str[i])) {
       nchar++;
   }
}
printf("nchar = %d\n", nchar);

您可能在代码中看到的其他方式是:

int nchar = 0;
for(char *p = str; *p; nchar += (*p++ != ' '));

int nchar = 0;
for(char *p = str; *p; nchar += isspace(*p++) == 0);

但那些不太明显。

答案 1 :(得分:0)

您需要迭代字符串并检查所有字符,仅计算非空格字符。类似的东西:

int i;
int len = strlen(str);
int count = 0;

for (i = 0; i < len; i++) {
    char c = str[i];
    if ( /* check that char is not space */ )
        count++;
}

或者,您可以计算所有空格字符,然后计算len - nspaces