如何计算字符串中的字符总和,不包括空格?!我写了一个代码,但它也计算空格。有什么建议?这就是我所拥有的:
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();
}
答案 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
。