chyba v programu
Napsal: 20 lis 2010 22:43
Zdravím,
Dělám program do školy, ale nějak mi to nejede. Když zapnu program, poprvé projede dobře, ale když dám opakovat (stisknu A), tak už mi nenajede na zadávání retezce1. Jestli někdo víte jak na to, tak PLS poraďte. Dík moc
[list=]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void remchar(char *s, char c);
char konec;
//______________odpogram_________________________________
void remchar(char *s, char c)
{
char *pom=s;
int i=0;
int j=0;
while(*(s+i)!='\0')
{
if(*(s+i) != c) {
*(pom+j) = *(s+i);
j++;
}
i++;
}
*(pom+j) = '\0';
}
//___________hlavni program______________________________
int main(int argc, char *argv[])
{
int h, delka;
char retezec[80], retez[80], a[1];
do{
system("cls");
printf("Zadej retezec1: ");
gets(retezec);
printf("\n");
printf("Zadej retezec2: ");
gets(retez);
printf("\n");
printf("\n ---- MENU ---- \n");
printf("1 - delka retezcu\n");
printf("2 - vymazani znaku z retezcu\n");
printf("3 - porovnani dvou retezcu\n");
printf("4 - kopirovani retezcu\n");
printf("5 - spojeni dvou retezcu\n");
printf("co chces robit: ");
scanf("%d", &h);
printf("\n");
switch (h) {
case 1: {
};break;
case 2: {char a;
printf("zadej znak na vymazani: ");
scanf("%s",&a);
remchar(retezec, a);
printf("retezec1 bez znaku %c : %s\n", a, retezec);
remchar(retez, a);
printf("retezec2 bez znaku %c : %s\n", a, retez);
};break;
case 3: {if (strcmp(retezec, retez)!=0)
printf("retezce jsou ruzne\n");
else
printf("retezce jsou totozne\n");
};break;
case 4: {printf("do retezce1 byl zkopirovany retezec2\n");
strcpy(retezec, retez);
printf("vypis retezec1: %s\n",retezec);
};break;
case 5: {char str[170];
strcat(str, retezec);
strcat(str, retez);
puts(str);
};break;
default: printf("mas jenom 5 voleb\n");break;
}
printf("pro opakovani stiskni A: ");
scanf("%s", &konec);
}while(konec == 'A');
}
[/list]
Dělám program do školy, ale nějak mi to nejede. Když zapnu program, poprvé projede dobře, ale když dám opakovat (stisknu A), tak už mi nenajede na zadávání retezce1. Jestli někdo víte jak na to, tak PLS poraďte. Dík moc
[list=]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void remchar(char *s, char c);
char konec;
//______________odpogram_________________________________
void remchar(char *s, char c)
{
char *pom=s;
int i=0;
int j=0;
while(*(s+i)!='\0')
{
if(*(s+i) != c) {
*(pom+j) = *(s+i);
j++;
}
i++;
}
*(pom+j) = '\0';
}
//___________hlavni program______________________________
int main(int argc, char *argv[])
{
int h, delka;
char retezec[80], retez[80], a[1];
do{
system("cls");
printf("Zadej retezec1: ");
gets(retezec);
printf("\n");
printf("Zadej retezec2: ");
gets(retez);
printf("\n");
printf("\n ---- MENU ---- \n");
printf("1 - delka retezcu\n");
printf("2 - vymazani znaku z retezcu\n");
printf("3 - porovnani dvou retezcu\n");
printf("4 - kopirovani retezcu\n");
printf("5 - spojeni dvou retezcu\n");
printf("co chces robit: ");
scanf("%d", &h);
printf("\n");
switch (h) {
case 1: {
};break;
case 2: {char a;
printf("zadej znak na vymazani: ");
scanf("%s",&a);
remchar(retezec, a);
printf("retezec1 bez znaku %c : %s\n", a, retezec);
remchar(retez, a);
printf("retezec2 bez znaku %c : %s\n", a, retez);
};break;
case 3: {if (strcmp(retezec, retez)!=0)
printf("retezce jsou ruzne\n");
else
printf("retezce jsou totozne\n");
};break;
case 4: {printf("do retezce1 byl zkopirovany retezec2\n");
strcpy(retezec, retez);
printf("vypis retezec1: %s\n",retezec);
};break;
case 5: {char str[170];
strcat(str, retezec);
strcat(str, retez);
puts(str);
};break;
default: printf("mas jenom 5 voleb\n");break;
}
printf("pro opakovani stiskni A: ");
scanf("%s", &konec);
}while(konec == 'A');
}
[/list]