Member 13015247 Ответов: 1

Печатная строка в следующей строке без использования \n


я не мог понять, почему язык отличается от строки, а другие слова печатаются в следующей строке, даже если я нигде не использовал \n

Что я уже пробовал:

#include<stdio.h>
#include<string.h>
void search_space(char* string,int n);
void print(char *string,int *t,int k);
int main()
{int n;
char string[100];
fgets(string,100,stdin);
n=strlen(string);
search_space(string,n);
}
void search_space(char* string,int n)
{int i=0,j=0,k;
int  t[100];

    while(string[i]!='\0')
    {
        if(string[i]==' ')
        {t[j]=i;
        j++;}
        i++;
    }
    for(k=j-1;k>=0;k--)
    print(string,t,k);    
}
void print(char *string,int *t,int k)
{ 
    int i=t[k]+1;
    while(string[i]!=' '&&string[i]!='\0')
    {  
        printf("%c",string[i]);
        i++;
    }
}

выход
language
programmingbestis

Richard MacCutchan

Должно быть, вы где-то набрали символ новой строки. Нелегко понять, что должен делать ваш код.

1 Ответов

Рейтинг:
2

Jochen Arndt

При вводе строки у вас есть символ новой строки. Видеть ссылка на fgets - C++ [^]:

Цитата:
Считывает символы из потока и сохраняет их в виде строки C в str до тех пор, пока не будут прочитаны символы (num-1) или не будет достигнута новая строка или конец файла, в зависимости от того, что произойдет раньше.

Символ новой строки заставляет fgets прекратить чтение, но функция считает его допустимым символом и включает в строку, скопированную в str.
Иначе говоря:
fgets() ждет, пока вы не нажмете клавишу Enter, которая переводится в символ новой строки и сохраняется в string. Только если вы вводите 100 или более символов, символ новой строки отсутствует, потому что fgets() возвращается при достижении предела.