Почему я получаю новую строку здесь перед значением счетчика печати?
Вот мой код Вот мой желаемый результат:
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';