zapis do pliku

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;

}

1
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>

0
FILE *za=fopen(argv[2/*drugi powiadasz?*/],"w");
if (argc < 3/*ma być dwa parametry plus nazwa programu razem 3*/) /*sprawdza obecnosc argumentow*/
2

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

FILE* zw = fopen(argv[1], "r");
FILE* za = fopen(argv[2], "w");
...
fscanf(za, "%s", zt);
fprintf(zw, "%s\n", zt);
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 :)

0

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

0

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

1

fgets

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);

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.

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