0
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

 blokun() {
    char space = ' ';
    char word[100];
    fgets(word, 100, stdin);
    char word1[32], word2[32];

    for (int i = 0; i < 100; i++) {
        if (*(word + i) != space) word1[i] = word[i];
        else {
            for (int k = 0; k < 100; k++) {
                if (*(word + i) != space) word2[i] = word[i];
            }
            break;
        }
    }
    printf("%s\n", word1);
    printf("%s\n", word2);
}

int main()
{
    int N;
    scanf("%d", &N);
    blokun();

    return 0;
}
  • fgets(word, 120, stdin); А почему 120, если выделено 100 байт? – Harry Sep 23 '23 at 16:06
  • @Harry эксперементировал, все равно не работает –  Sep 23 '23 at 16:15
  • Да все работает: https://ideone.com/8AOJam Воспроизвести проблему не получается... – Harry Sep 23 '23 at 16:23
  • да, действительно, gets заработал, но возникла другая проблема: он не работает в цикле, просто игнорируется. я не знал этого, поэтому привел в пример макисмально упрощенную версию проблемы –  Sep 23 '23 at 16:28
  • Ну так приведите код, который демонстрирует проблему... – Harry Sep 23 '23 at 17:17
  • @Harry изменил код в вопросе –  Sep 23 '23 at 17:49
  • Ну, еще бы и пример вводимых данных, приводящих к проблеме. Кстати, вы считываете — готов спорить :) — пустую строку. Ибо см. https://ru.stackoverflow.com/q/834447/195342 А поскольку вы не проверяете, что же вы считали, вот и имеем то, что имеем... – Harry Sep 23 '23 at 17:54
  • @Harry вводятся автоматическими тестами строчка, состоящая из двух слов, разделенных пробелом –  Sep 23 '23 at 18:01
  • Ладно, медленно, как для депутата :) Вы вводите первым какое-то число. После него в буфере ввода остается символ перевода строки. Так что при чтении строки вы читаете пустую строку. Дальше ничего не надо пояснять? – Harry Sep 23 '23 at 18:13

0 Answers0