Przekierowanie standardowago wejścia.

Przekierowanie standardowago wejścia.
AR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Witam,
dla prostego kodu

Kopiuj
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char ** argv){

	printf("Args amount %d\n", argc);
	for(int i=0; i<argc ; i++){
		printf("%s\n",argv[i] );
	}
}

oraz pliku z tekstem

Kopiuj
jakiś przykładowy tekst

Przy wywołaniu otrzymuję następujące rezultaty

Kopiuj
./main <temp.txt
Args amount 1
./main

Oczekując rezultatu, że ilość arugmentów powinna wynosić 4. Gdzie popełniam błąd ?

pasasap
  • Rejestracja: dni
  • Ostatnio: dni
1

To nie przekierowanie, tylko argumenty do programu powinnaś przekazać. np.:

Kopiuj
./main arg1 arg2 arg3
AR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Ale istnieje również możliwość przekierowania argumentów z pliku za pomocą "<", jednakże nie wiem czemu tym razem nie działa...

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
0

Spróbuj:

Kopiuj
./main $(< temp.txt)
Althorion
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1620
1

Tak przekierowany plik ląduje na standardowym wejściu, więc dostać się do niego może co najwyżej printf. Taką funkcjonalność, jakiej Ty szukasz, ma xargs.

AR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Może bardziej sprecyzuje... Do pliku muszę się dostawać właśnie przez

Kopiuj
./main <temp.txt

więc inna składnia nie wchodzi w grę.

Althorion
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1620
1

W takim razie zawartość tego pliku będzie, tak jak pisałem, dostępna przez printf i podobne funkcje, tak jakbyś normalnie miał dostęp do treści wpisywanych z klawiatury.

MO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tam gdzie jest (centy)metro...
2

Jak wykonasz:

Kopiuj
./main $(cat file.txt)

.. to dostaniesz dane z pliku poprzez argc i argv.
Jednak jak zrobisz:

Kopiuj
./main <file.txt

.. argumenty możesz wczytywać poprzez funkcje z rodziny scanf() i pochodne (obsługujące standardowe wejście).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.