Przekierowanie standardowago wejścia.

0

Witam,
dla prostego kodu

#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

jakiś przykładowy tekst

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

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

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

1

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

./main arg1 arg2 arg3
0

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

0

Spróbuj:

./main $(< temp.txt)
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.

0

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

./main <temp.txt

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

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.

2

Jak wykonasz:

./main $(cat file.txt)

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

./main <file.txt

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1