Nazdar bratia,spravil som takýto program a potreboval by som pomôcť vyladiť,zajtra to mám odovzdať,sú to len menšie chybičky....Jedna chyba je že: mam v subore mena a prinich známky,pokial mám na spodu prazdny riadok a dam vypisať,zdvoji mi to na ploche posledné meno....ked tam riadok nemám funguje to správne,ved to aj chcem,len problem je vtom že ak chcem v tom programe priamo pridať nove meno,nedá mi ho na nový riadok ale ku predchadzajucemu....preto by som potreboval poradiť program na spočitanie riadkov a vymazanie posledneho riadku :D a druha vec,nie vždy mi funguje ako má funkcia "ches pokracovat stlač a alebo n".....ďakujem za rady
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define otvor1 FILE *fw; fw = fopen("znamky.txt", "r");
#define otvor2 FILE *fw; fw = fopen("znamky.txt", "a");
#define otvor3 FILE *fp; fp = fopen("znamky2.txt", "w");
void vypis ()
{
otvor1;
if(fw == NULL)
printf("Subor sa nenasiel.\n");
else
{
int q;
char all[10],all1[10];
while(feof(fw) == 0)
{
fscanf(fw,"%s", all);
fscanf(fw,"%s", all1);
printf("%s %s\n",all);
}
}
}
void hladaj()
{
otvor1;
if(fw == NULL)
printf("Subor sa nenasiel.\n");
else
{
int x = 0;
char meno[20],menoFW[20], znamky[20];
printf("Zadaj meno: ");
scanf("%s", meno);
while(feof(fw) == 0 && x == 0)
{
fscanf(fw,"%s", menoFW);
fscanf(fw,"%s", znamky);
if(strcmp(meno,menoFW) == 0)
x = 1;
}
if(x == 1)
printf("%s %s\n", menoFW, znamky);
else
printf("Meno sa v zozname nenaslo.\n");
fclose(fw);
}
}
void pridaj()
{
otvor2;
if(fw == NULL)
printf("Subor sa nenasiel.");
else
{
char meno[20], znamky[20];
printf("Zadaj meno: ");
scanf("%s", meno);
printf("Zadaj znamky: ");
scanf("%s", znamky);
fprintf(fw,"%s %s\n", meno, znamky);
fclose(fw);
}
}
void vymaz()
{
otvor1;
if(fw == NULL)
printf("Subor sa nenasiel.");
else
{
int x = 0;
char meno[20],menoFW[20],znamky[20];
printf("Zadaj meno: ");
scanf("%s", meno);
while(feof(fw) == 0 && x == 0)
{
fscanf(fw,"%s", menoFW);
fscanf(fw,"%s", znamky);
if(strcmp(meno,menoFW) == 0)
x = 1;
}
if(x == 1)
{
otvor3;
x = 0;
fseek(fw, 0, SEEK_SET);
int i = 0;
while(feof(fw) == 0)
{
fscanf(fw,"%s", menoFW);
fscanf(fw,"%s", znamky);
i++;
}
fseek(fw, 0, SEEK_SET);
int j;
for(j=0;j<i-1;j++)
{
fscanf(fw,"%s", menoFW);
fscanf(fw,"%s", znamky);
if(strcmp(meno,menoFW) != 0)
{
fprintf(fp,"%s ", menoFW);
fprintf(fp,"%s", znamky);
fprintf(fp,"\n");
}
}
fclose(fp);
fclose(fw);
fw = fopen("znamky.txt", "w");
fp = fopen("znamky2.txt", "r");
j=0;
for(j=0;j<i-2;j++)
{
fscanf(fp,"%s", menoFW);
fscanf(fp,"%s", znamky);
fprintf(fw,"%s ", menoFW);
fprintf(fw,"%s", znamky);
fprintf(fw,"\n");
}
fclose(fp);
fclose(fw);
}
else
printf("Meno sa v zozname nenaslo.\n");
}
}
void oprav ()
{
otvor1;
if(fw == NULL)
printf("Subor sa nenasiel.");
else
{
int x = 0;
char meno[20],menoFW[20],znamky[20],znamkyNove[20];
printf("Zadaj meno: ");
scanf("%s", meno);
while(feof(fw) == 0 && x == 0)
{
fscanf(fw,"%s", menoFW);
fscanf(fw,"%s", znamky);
if(strcmp(meno,menoFW) == 0)
x = 1;
}
if(x == 1)
{
FILE *fp;
fp = fopen("znamky2.txt", "w");
x = 0;
fseek(fw, 0, SEEK_SET);
printf("Zadaj nove znamky: ");
scanf("%s", znamkyNove);
int i = 0;
while(feof(fw) == 0)
{
fscanf(fw,"%s", menoFW);
fscanf(fw,"%s", znamky);
i++;
}
fseek(fw, 0, SEEK_SET);
int j;
for(j=0;j<i-1;j++)
{
fscanf(fw,"%s", menoFW);
fscanf(fw,"%s", znamky);
if(strcmp(meno,menoFW) == 0)
{
fprintf(fp,"%s ", menoFW);
fprintf(fp,"%s", znamkyNove);
fprintf(fp,"\n");
}
else
{
fprintf(fp,"%s ", menoFW);
fprintf(fp,"%s", znamky);
fprintf(fp,"\n");
}
}
fclose(fp);
fclose(fw);
fw = fopen("znamky.txt", "w");
fp = fopen("znamky2.txt", "r");
j=0;
for(j=0;j<i-1;j++)
{
fscanf(fp,"%s", menoFW);
fscanf(fp,"%s", znamky);
fprintf(fw,"%s ", menoFW);
fprintf(fw,"%s", znamky);
fprintf(fw,"\n");
}
fclose(fp);
fclose(fw);
}
else
printf("Meno sa v zozname nenaslo.\n");
}
}
int main()
{
char c,d;
while(d != 'n')
{
printf("VYPIS - 1\n");
printf("HLADAJ - 2\n");
printf("PRIDAJ - 3\n");
printf("OPRAV - 4\n");
printf("VYMAZ - 5\n");
printf("KONIEC - 6\n");
printf("-------------\n");
printf("\n");
printf("Zadaj prikaz: ");
c = getchar();
getchar();
switch (c) {
case '1': vypis();
break;
case '2': hladaj();
break;
case '3': pridaj();
break;
case '4': oprav();
break;
case '5': vymaz();
break;
case '6': return 0;
break;
default : printf("Zadany prikaz neexistuje.\n");
}
printf("Chces pokracovat a/n?\n");
getchar();
d = getchar();
getchar();
if(d == 'n')
{
return 0;
}
system("cls");
}
system("PAUSE");
return 0;
}