2013-11-20 3 views
0

Как подсчитать количество символов в строке, исключая пробелы ?! Я написал код, но он также содержит пробелы. Какие-либо предложения? вот что у меня есть:Подсчитать все символы в строке, но пробелы

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

Рассмотрите возможность использования ['isspace'] (http://www.cplusplus.com/reference/cctype/isspace/). – squiguy

+2

Обязательное предупреждение использовать 'fgets' не' gets'. – Duck

+0

Вы не прилагали никаких усилий, чтобы «посчитать» что угодно. Вы использовали 'strlen()' для получения общей длины строки. –

ответ

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.

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); 

Но это менее очевидно.

Смежные вопросы