• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Stdin, stdout w terminalu linuowym.

HackNation - ogólnopolski hackathon
0 głosów
220 wizyt
pytanie zadane 7 marca 2021 w C i C++ przez Michał Drożdżyński Początkujący (370 p.)
edycja 7 marca 2021 przez Michał Drożdżyński
#include <iostream>

using namespace std;

int main()
{
    string name;
    cin >> name;
    cout << "Hello " << name << "!" << endl;
    return 0;
}

Mam tutaj prosty program witający użytkownika. Chcę dane wejściowe odczytywać z pliku, a wyjściowe zapisywać do pliku. Nie chodzi mi o to, aby operacja odczytu i zapisu znajdowała się w kodzie tylko dane były podawane za pomocą standardowego wejścia w terminalu.

g++ main.cpp < a.in -o a.out

Użyłem takiego polecenia. W pliku a.in znajduje się tylko imię. Chciałbym aby dane z pliku a.in były podane na standardowe wejście, a do pliku a.out zapisane zostały dane wejściowe. Niestety to nie działa. Powstaje plik a.out, ale nie da się go otworzyć. Gdy w kodzie programu usunę zmienną name i zostawię sam Hello World to ten napis prawidłowo zapisuje się do pliku. Lecz gdy podaje coś na wejściu to coś jest nie tak. W jaki sposób rozwiązać ten problem?

1 odpowiedź

+2 głosów
odpowiedź 7 marca 2021 przez adrian17 Mentor (354,800 p.)
wybrane 7 marca 2021 przez Michał Drożdżyński
 
Najlepsza
Mylisz kompilację i uruchomienie programu.

Do kompilacji - wywołania g++ - nie przekazujesz nic związanego z wejściem/wyjściem programu.

Pipe'owanie z użyciem `<`, `>` używasz przy odpalaniu już skompilowanego programu.

Podobne pytania

+1 głos
0 odpowiedzi 262 wizyt
0 głosów
1 odpowiedź 706 wizyt

93,608 zapytań

142,531 odpowiedzi

323,004 komentarzy

63,102 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...