Wyswietlanie wyrazow za pomoca argc, argv

0

Mam za zadanie zrobic programik, który przepisze z każdego wiersza standardowego wejscia tylko wyrazy o podanych numerach.
Chciałbym kilka rad.
Mój pomysł wygląda tak:

#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {

następnie otwieram żądany plik:

freopen("in.txt","r",stdin);

lub

fopen ("C:\\Users\\user\\Desktop\\cos1.txt", "r+"); 

Jaka jest roznica otwarcia pomiedzy tymi plikami?

I dalszy problem- załóżmy że chce wyświetlić 5 slowo z zadanego pliku textowego, chciałem to zrobić tak:

 printf ("%d", argv[2]);

Ale to nie dziala - rozumie że argc wskazuje mi liczbe słów, zaś argv przechowuje slowa.
Ale nie wiem jaki robie blad przy wyswietlaniu np. 5 slowa.

0

Nie nie nie. Nic nie zrozumiałeś ;] argc i argv określają tylko parametry wywołania programu, tzn

program.exe parametr1 parametr2 parametr3

A nie to co leci z STDIN.

Różnica między freopen() a fopen() jest niewielka. Ot fopen zwraca ci uchwyt do pliku i musisz czytać z tego pliku dane, a freopen wiąże uchwyt z jakimś strumieniem, w tym przypadku z stdin.
W tym drugim przypadku mozesz czytać normalnie za pomocą scanf() tak jakby ktoś te dane pisał z klawiatury.

0

Sądzę że numery pewnie podajesz w parametrach:
program.exe 2 4 6
Dalej czytasz wejście i analizujesz każdy wczytany wiersz.
Nie potrzebujesz otwierania jakiegokolwiek pliku.

freopen("in.txt","r",stdin);
Pozwala ci podmienić standardowe wejście na podany plik, przed tą komendą:
scanf("%d",&n); // wczytujemy liczbę z klawiatury/konsoli
po tej komendzie:
scanf("%d",&n); // wczytujemy liczbę z pliku in.txt

Czyli zwyczajnie podmieniamy stdin.

0

Masz racje - otwieram program z konsoli i wpisuje żadane slowa np. program.exe 5 7-10
Lecz moim problem jest pozniejsze wypisanie tych slow - a wlasciwie wypisanie jakiegokolwiek znaku

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

int main(int argc, char **argv)
{
{//odczytanie z wejscia ktore slowa maja byc wypisane - to potrafie zrobic.

} //otwarcie pliku i wypisanie wszystkich liter - nie ptorafie zrobic
 freopen("cos1.txt","r",stdin);
scanf("%d",&n);
  int c;
  c=getchar();
  while (c != EOF)
  {
      putchar(c);
  }
  freopen("out.txt","a",stdout);
return EXIT_SUCCESS;;
}

jakaś rada?

0
ptomasz napisał(a):

Lecz moim problem jest ...

Nie, twoim problemem jest brak jakiekolwiek wiedzy z zakresu C/C++ oraz niechęć przeczytania jakiegoś kursu - wystarczy kilka pierwszych stron.
Radę mam, zacznij od przeczytania kilku stron jakiegoś kursu.
Programowanie metodą wpisania do jednego pliku wszystkiego co gdzieś widział lub słyszał o programowaniu - skazana na porażkę.

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