zapis do pliku

MI
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

Hej mam problem z kodem chce zapisac tekst z pliku do drugiego pliku, wszystko sie kompiluje, ale po odpaleniu programu nic sie nie skopiowalo do pliku docelowego a w pliku, z ktorego bralam tekst do kopiowania nic nie ma wszystko sie usunelo. probowalam fgetsem fputsem i nic Prosze o pomoc i z góry wielkie dzieki :)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char zt[3000];
FILE *zw=fopen(argv[1],"r");
FILE *za=fopen(argv[1],"w");
if (argc < 2) /sprawdza obecnosc argumentow/
{
fprintf(stderr, "Sposob uzycia %s nazwa_pliku\n", argv [0]);
exit(1);
}

if (za == NULL)
{
fprintf(stderr, "NIe mogłem otworzyć pliku "%s".\n", argv[1]);
exit(2);
}if (zw == NULL)
{
fprintf(stderr, "NIe mogłem otworzyć pliku "%s".\n", argv[1]);
exit(2);
}

fscanf(za,"%s",zt);//wprowadzenie tekstu do tablicy
fprintf(zw,"%s\n",zt); // zapisanie wiersza do pliku
fclose(zw);
fclose(za);

return 0;

}

MI
czy za pomoca fscanf moge wprowadzac tekst z pliku do tablicy bo mimo, ze poprawilam na FILE *za=fopen(argv[2],"w"); nadal nie kopiuje ;/
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
1
Kopiuj
FILE *zw=fopen(argv[1],"r"); 
FILE *za=fopen(argv[1],"w");

jakiego drugiego pliku?

Poza tym sformatuj kod i wstaw znaczniki <code class="c"></code>

MI
o co chodzi ze znacznikami <code=c></code>?
twonek
Kod w poście wstaw między te znaczniki, dzięki czemu będą ładnie pokazane jak w moim poście.
MI
nie wiesz moze dlaczego nie dziala mi nadal program zmienilam na FILE *za=fopen(argv[2],"w"); i nadal nic czy za pomoca fscanf moge wprowadzic tekst do tablicy ?
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0
Kopiuj
FILE *za=fopen(argv[2/*drugi powiadasz?*/],"w");
if (argc < 3/*ma być dwa parametry plus nazwa programu razem 3*/) /*sprawdza obecnosc argumentow*/

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
MI
no tak dzieki ale gafa :)
MI
hmm ale nadal nic nie kopiuje jak wpisuje w linii polecen ./a.out test.txt kopia.txt bo to sa nazwy moich plikow tekstowych
_13th_Dragon
Pewnie nie masz utworzonego pliku kopia.txt zawsze warto zajrzeć do dokumentacji.
MI
jest utworzylam plik tekstowy kopia.txt czyli mowisz ze fscanf zapisze do tablicy tekst z pliku ?
_13th_Dragon
no to pokazuj poprawiony kod lub polecam ten forum: http://forum.gazeta.pl/forum/f,468,Wrozbiarstwo.html
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
2

@michalukwerka krótkie i nic nie mówiące nazwy zmiennych się mszczą:

Kopiuj
FILE* zw = fopen(argv[1], "r");
FILE* za = fopen(argv[2], "w");
...
fscanf(za, "%s", zt);
fprintf(zw, "%s\n", zt);
MI
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

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

int main(int argc, char *argv[])
{
char zt[3000];
FILE *zw=fopen(argv[1],"r");
FILE *za=fopen(argv[2],"w");
if (argc < 2) /sprawdza obecnosc argumentow/
{
fprintf(stderr, "Sposob uzycia %s nazwa_pliku\n", argv [0]);
exit(1);
}

if (zw == NULL)
{
fprintf(stderr, "NIe mogłem otworzyć pliku "%s".\n", argv[1]);
exit(2);
}if (za == NULL)
{
fprintf(stderr, "NIe mogłem otworzyć pliku "%s".\n", argv[2]);
exit(2);
}

fscanf(zw,"%s",zt);//wprowadzenie tekstu do tablicy
fprintf(za,"%s\n",zt); // zapisanie wiersza do pliku(zw);
fclose(za);
fclose(zw);

return 0;

}

to poprawiony kod panowie prosze o pomoc :)

twonek
argh, &lt;code=c&gt;TU CALY KOD&lt;/code&gt;
MI
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

Działa dziekuje pieknie :) dziala mala pomylka juz poprawiona :) Dziekuje :)

MI
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

Sorki ze tak motam, ale nie dziala, bo kopiuje mi do pierwszego bialego znaku nie wiecie jak skopiowac dluzszy tekst ?

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
1

fgets


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
MI
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

Mam problem z policzeniem wyrazow z pliku wyjsciowego wiem ze gdy zapisuje go do tablicy to pozniej musze uzyc fgets i sscanf zeby policzyc wyrazy w tablicy czy taki zapis jest poprawny ? fgets(zt, sizeof(zt), stdin);
sscanf(zt,"%d",&n);

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0

sscanf'em nie policzysz wyrazy w wierszu.
Dla policzenia wyrazów najprościej czytać znak po znaku wprost z pliku.
Obejrzyj sobie funkcje isspace() jeżeli poprzedni znak jest takim znakiem zaś bieżący nie jest to zwiększasz licznik wyrazów.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
MI
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:21
0

czytalam ze laczas fgets i sscanf policzy mi jakos slowa ale wlasnie nie wiem jak a poza tym nie wiecie jak skopiowac kilka wierszy z pliku do pliku bo kopiuje mi teraz ale do konca linijki a kolejnych juz nie ;/

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0

O pętlach słyszałaś?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

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.