Toto vlákno bylo označeno za vyřešené.
Kent 0
Stálý člen
Dobrý večer,
mám textový súbor v ktorom sú vypísané údaje typu "Meno Operator"
napr:
Martin O
Peter E
Fero O
O - Orange
T - Tmobile
mám napísať program, ktorý rozdelí zadané mená s operátormi do dvoch rôznych súborov. Takže v jednom budú tí, ktorí majú O, a v druhom tí, ktorí majú E.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char meno[20],oper[1];
FILE *fr, *fw, *fw1;
fr=fopen("operatori.TXT","r");
fw=fopen("orange.TXT","w");
fw1=fopen("tmobile.TXT","w");
while(feof(fr)==0)
{
fscanf(fr,"%s",meno);
fscanf(fr,"%s",oper);
if(oper == 'O')
{
fprintf(fw,"%s",meno);
fprintf(fw,"%s",oper);
}
if(oper == 'T')
{
fprintf(fw1,"%s",meno);
fprintf(fw1,"%s",oper);
}
}
system("PAUSE");
return 0;
}
skúsil som to takto, ale nefunguje mi to. Tak by som poprosil o nejakú užitočnú radu. Ďakujem
Kent 0
Stálý člen
malo tam byť T :) nie E pardon za preklep
KIIV ~ Moderátor
+43
God of flame
no oper mas jako retezec ale pak srovnavas se znakem 'T' nebo 'O' - to nebude fungovat jak si predstavujes
Program vždy dělá to co naprogramujete, ne to co chcete...
marpit 0
Stálý člen
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char meno[20], oper;
FILE *fr, *fw, *fw1;
fr=fopen("operatori.TXT","r");
fw=fopen("orange.TXT","w");
fw1=fopen("tmobile.TXT","w");
while(fscanf(fr,"%s %c",meno, &oper) == 2)
{
if(oper == 'O')
{
fprintf(fw,"%s\n",meno);
}
else if(oper == 'E')
{
fprintf(fw1,"%s\n",meno);
}
else continue;
}
system("PAUSE");
return 0;
}
marpit 0
Stálý člen
Pár poznámek: ošetři otevírání souborů a na konci soubory nezavíráš.
Kent 0
Stálý člen
while(fscanf(fr,"%s %c",meno, &oper) == 2)
prečo je v tomto cykle == 2 ?
a potom celý program bude
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char meno[20], oper;
FILE *fr, *fw, *fw1;
fr=fopen("operatori.TXT","r");
fw=fopen("orange.TXT","w");
fw1=fopen("tmobile.TXT","w");
while(fscanf(fr,"%s %c",meno, &oper) == 2)
{
if(oper == 'O')
{
fprintf(fw,"%s\n",meno);
}
else if(oper == 'E')
{
fprintf(fw1,"%s\n",meno);
}
else continue;
}
fclose(fw);
fclose(fr);
fclose(fw1);
system("PAUSE");
return 0;
}
alebo nie?
ale nefunguje mi to :/
Kent 0
Stálý člen
nezapisuje to aj do textového súboru tmobile
KIIV ~ Moderátor
+43
God of flame
proc je tam == 2 ? zkusil si se uz podivat na manualovy stranky k "fscanf" ?
Program vždy dělá to co naprogramujete, ne to co chcete...
marpit 0
Stálý člen
fscanf stejně jako scanf vrací počet úspěšně načtených hodnot, ve tvém případě tedy úspěšně načtené jméno a kod operátora. Doporučil bych si k programování něco přečíst, toto jsou úplné základy. Jinak ten kod, co jsem tu vložil je funkční (ověřeno na datech, které jsi dal k dispozici).
Co se stane, když neexistuje soubor operatori.txt? To ještě ošetři.
Kent 0
Stálý člen
prácu so súbormi sme začali preberať len nedávno takže sa všetko len učím
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char meno[20], oper;
FILE *fr, *fw, *fw1;
fr=fopen("operatori.TXT","r");
fw=fopen("orange.TXT","w");
fw1=fopen("tmobile.TXT","w");
if ((fr = fopen("operatori.TXT", "r")) == NULL)
{
printf("Subor operatori.TXT sa nepodarilo otvorit.\n");
}
else
{
while(fscanf(fr,"%s %c",meno, &oper) == 2)
{
if(oper == 'O')
{
fprintf(fw,"%s\n",meno);
}
else if(oper == 'E')
{
fprintf(fw1,"%s\n",meno);
}
else continue;
}
}
fclose(fw);
fclose(fr);
fclose(fw1);
system("PAUSE");
return 0;
}
takto je to aj s ošetrením existencie súboru
KIIV ~ Moderátor
+43
God of flame
takto to neni s osetrenim existence souboru.. . takhle se pokousis otevrit stejny soubor vickrat
Program vždy dělá to co naprogramujete, ne to co chcete...
Kent 0
Stálý člen
aha..tak nič ..
a ako sa ošetrí existencia súboru?
KIIV ~ Moderátor
+43
God of flame
#12 Kent
zkontrolujes co je v tom fr ... napriklad if ( fr != NULL ) { uspesne otevrene...
Program vždy dělá to co naprogramujete, ne to co chcete...
Kent 0
Stálý člen
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char veta[1024];
char veta1[1024];
int c;
FILE *fw,*fr,*fr1;
fr=fopen("prvy.TXT","r");
fw=fopen("treti.TXT","w");
fr1=fopen("druhy.TXT","r");
if(fr =! NULL)
{
while(feof(fr) == 0)
{
fgets(veta,1023,fr);
fprintf(fw,"%s ",veta);
}
}
else
printf("Subor sa nepodarilo otvorit\n");
if(fr1 != NULL)
{
while(feof(fr1) == 0)
{
fgets(veta1,1023,fr1);
fprintf(fw,"%s ",veta1);
}
}
else
printf("Subor sa nepodarilo otvorit\n");
fclose(fr);
fclose(fr1);
fclose(fw);
system("PAUSE");
return 0;
}
takto som to pochopil ja..ale keď spustím ten program tak mi hneď zlyhá. Hlási, že program prestal pracovať
vitamin +8
Grafoman
Toto
if(fr =! NULL)
pochopi kompilator nasledovne:
if( fr = (!NULL) )
takze vo fr bude adresa 0x1 :)
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Kent 0
Stálý člen
nechápem
tak ako to má byť napísané?
vitamin +8
Grafoman
#16 Kent
toto je binarny operator 'nerovnasa':
!=
toto je binarny operator 'rovnasa' a unarna 'negacia'
=!
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Kent 0
Stálý člen
och..také hlúpe chyby robím
ďakujem
Zjistit počet nových příspěvků
Přidej příspěvek
Uživatelé prohlížející si toto vlákno Uživatelé on-line: 0 registrovaných, 47 hostů