Zdravim. M8m problém s jedním programem. Má to přepisovat text z jednoho souboru do druhého. Vše funguje do té doby, než se do vstupního textu zadjí tři znaky (např. a b c). Překopíruje to pouze čtverečky. Myslím že chyba bude někde v tom slovo[znaky+1]='\0'; ale nevím co s tim?
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
FILE *vstup,
*vystup;
char c,
slovo[256];
int znaky=0,
pocet_slov=0,
slova;
/*overeni argumentu*/
if(argc != 3) {
printf("Chybny pocet argumentu !\n");
fflush(stdin);
getchar();
exit(1);
}
/* otevřu zdrojový soubor */
if((vstup=fopen(argv[1],"r"))==NULL) {
printf("Nepodarilo se otevrit zdrojovy soubor !\n");
fflush(stdin);
getchar();
exit(1);
}
/* vytvořím cílovy soubor */
if((vystup=fopen(argv[2],"r")) != NULL) {
printf("Cilovy soubor existuje, spustte program s jinym parametrem cilového souboru !\n");
fflush(stdin);
getchar();
exit(1);
}
else {
if((vystup=fopen(argv[2],"w"))==NULL) {
printf("Cilovy soubor se nepovedlo vytvorit !\n");
fflush(stdin);
getchar();
exit(1);
}
}
/* čtu soubor po znacích */
while((c=fgetc(vstup)) != EOF) {
/* když je to mezera */
if( c == ' ' || c == '\n' || c == '\t') {
if (slova == 1) {
pocet_slov++;
/* zapisuju slovo, pokud neni třetím */
if ((pocet_slov % 3) != 0) {
slovo[znaky] = ' ';
slovo[znaky+1]='\0';
fputs(slovo,vystup);
}
}
/* vynuluji délku znaku */
znaky = 0;
slova = 0;
}
else {
slovo[znaky] = c;
znaky++;
slova = 1;
}
}
/* uzavřu oba soubory */
fclose(vystup);
fclose(vstup);
fflush(stdin);
getchar();
return 0;
}