Почему я получаю новую строку здесь перед значением счетчика печати?

Вот мой код Вот мой желаемый результат:

Occurrence of 'l' in Hello world = 3

Но я получаю новую линию после Привет, мир. Как я могу это исправить?

#include<stdio.h>
#include<string.h>
int main (void){
    char first_line[1000];
    char second_line[2];
    int i,n,j;
    int count=0,flag=0;
    fgets(first_line, 1000, stdin);
    fgets(second_line, 2, stdin);
    for(i=0; i<strlen(first_line); i++)
    {
        if(second_line[0]==first_line[i])
        {
            flag=1;
            count++;
        }
    }
    if(flag==1)
        printf("Occurrence of '%c' in %s = %d",second_line[0],first_line,count);

    else
        printf("%c isn't present",second_line[0]);

    return 0;
}

1 ответ

Решение

По описанию функции fgets в стандарте C (7.21.7.2 функция fgets)

2 Функция fgets считывает самое большее на единицу меньше, чем число символов, указанное в n, из потока, на который указывает поток, в массив, на который указывает s. Никакие дополнительные символы не читаются после символа новой строки (который сохраняется) или после конца файла. Нулевой символ записывается сразу после последнего прочитанного символа в массив.

Для удаления символа новой строки вы можете написать, например,

first_line[ strcspn( first_line, "\n" ) ] = '\0';
Другие вопросы по тегам