To zacatecnik : Jsem rád za každou pomoc :) Spouštím to přesně tak... a jak sem řekl, do b.txt mi to místo a b c překopíruje poze nesmyslné znaky ... já nejsem v céčku žádný profík, ale nechápu jaktože to někomu chodí a někomu ne :smile11:
Příspěvky odeslané z IP adresy 88.101.15.–
To Payne : Pouštím to přes dávku a pokaždé mi to vyhodí ty čtverečky. Bylo mi řečeno, že to program vypíše, když je chybný výstup nebo něco v tom smyslu. Prostě neznámé znaky. Odzkoušel jsem to na několika počítačích a nechodí to....
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;
}
To zacatecnik : Je to úkol do školy.
To Payne: Díky !!!!
Zdravim!
Mám problém s jedním úkolem (viz níže). Program pracuje správně do té doby než se do vstupních hodnot zadá: a b c. Překopíruje to pouze čtverečky. Přitom s velkými písmeny to funguje. Neporadil by mi někdo? Už fakt nevím co s tím. Předem díky!!!
/*
Příklad 46
Program přepisuje slova, každé třetí vynecháva, přičemž slova od sebe rozezná
pomoci mezer
*/
#include <stdio.h>
int main(int argc,char *argv[])
{
FILE *vstup,*vystup;
char c,slovo[256];
int znaky=0,pocet_slov=0;
slovo[0]='\0';
/*overeni argumentu*/
if(argc != 3)
{
printf("Chybný počet argumentů !\n");
system("PAUSE");
exit(1);
}
/* otevřu zdrojový soubor */
if((vstup=fopen(argv[1],"r"))==NULL)
{
printf("Nepodařilo se otevřít zdrojový soubor !\n");
system("PAUSE");
exit(1);
}
/* vytvořím cílovy soubor */
if(vystup=fopen(argv[2],"r"))
{
printf("Cílový soubor existuje, spusťte program s jiným parametrem cílového souboru !\n");
system("PAUSE");
exit(1);
}
else
{
if((vystup=fopen(argv[2],"w"))==NULL)
{
printf("Cílový soubor se nepovedlo vytvořit !\n");
system("PAUSE");
exit(1);
}
}
/* čtu soubor po znacích */
while((c=fgetc(vstup)) != EOF)
{
/* když je to mezera */
if( c == ' ' )
{
pocet_slov++;
/* zapisuju slovo, pokud neni třetím */
if( pocet_slov == 3 )
{
pocet_slov = 0;
}
else
{
slovo[znaky] = ' ';
slovo[znaky+1]='\0';
fputs(slovo,vystup);
}
/* vynuluji slovo a délku znaku */
znaky=0;
slovo[0]='\0';
}
else
{
slovo[znaky] = c;
znaky++;
if (znaky>250) znaky=250;
}
}
if( pocet_slov != 2 )
{
slovo[znaky] = '\0';
fputs(slovo,vystup);
}
/* uzavřu oba soubory */
fclose(vystup);
fclose(vstup);
system("PAUSE");
return 0;
}