Программа для расчета количества пробелов, вкладок и новых строк в строке - PullRequest
0 голосов
/ 02 января 2019
// Program to calculate number of blanks, tabs and newlines in a string
#include <stdio.h>

int main(void) {
    int blanks,tabs,newlines;
    char string[30];
    blanks=0;
    tabs=0;
    newlines=0;
    printf("Enter some text less than size 30:\t");
    scanf("%s", &string);
    for(int i=0; i<30; i++){
       if(string[i]=='')
         blanks++;
       if(string[i]=='\t')
         tabs++;
       if(string[i]=='\n')
         newlines++;
    }
       printf("No of blanks: %d \n No of Tabs: %d \n No of Newlines: %d", blanks,tabs,newlines);
   return 0;
 }

Это не getchar ()! = Версия EOF, поэтому не отмечайте ее как повтор.Также не может использовать любую библиотеку, кроме stdio.h

Ответы [ 2 ]

0 голосов
/ 02 января 2019

для вычисления количества пробелов, табуляций и новых строк в строке

Код OP почти подходит для обработки строки, но не может прочитать ввод пользователя при необходимости.

scanf("%s" не спасет пробелы.Используйте fgets(). @ anoopknr

// scanf("%s", &string);
fgets(string, sizeof string, stdin);

// Process the string until a null character is found.
// for(int i=0; i<30; i++){
for(int i=0; string[i]; i++){
   // OP's code should fail to compile as coded.
   // if(string[i]=='')
   if(string[i]==' ')
     blanks++;
   if(string[i]=='\t')
     tabs++;
   if(string[i]=='\n')
     newlines++;
}
0 голосов
/ 02 января 2019

scanf прекращает чтение при появлении пробелов, символов табуляции или новой строки.

Соответствует последовательности символов, не являющихся пробелами;следующий указатель должен быть указателем на массив символов, который достаточно длинный, чтобы содержать входную последовательность и завершающий нулевой байт ('\ 0'), который добавляется автоматически. Входная строка останавливается на пустом месте или на максимальной ширине поля, в зависимости от того, что произойдет раньше.

Таким образом, вы не читаете всю строку при вводе.

Попробуйте использовать fgets, как показано ниже.

    fgets(string, sizeof(string), stdin); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...