Witam. Do napisania mam program, w którym podaję za pomocą fgets napis o dlugości <=99, później napis2 o długości 5 występujący w napisie, który zostanie zastąpiony przez napis3 o długości 5:
#include <iostream>
#include <cstdio>
using namespace std;
void zamien (char napis1[], int i, char napis3[])
{
napis1[i] = napis3[0];
napis1[i+1] = napis3[1];
napis1[i+2] = napis3[2];
napis1[i+3] = napis3[3];
napis1[i+4] = napis3[4];
}
int znajdz (char napis1[], char napis2[])
{
int i=0;
do
{
if (napis1[i]==napis2[0] && napis1[i+1]==napis2[1] && napis1[i+2]==napis2[2] && napis1[i+3]==napis2[3] && napis1[i+4]==napis2[4])
return i;
else
i++;
} while (napis1[i]!='\0');
}
int main()
{
char napis1[100];
char napis2[6];
char napis3[6];
cout << "Enter a string: " << endl;
fgets (napis1,sizeof(napis1),stdin);
cout << "Enter a string to change from: " << endl;
fgets (napis2,sizeof(napis2),stdin);
cout << "Enter a string to change to: " << endl;
fgets (napis3,sizeof(napis3),stdin);
int i = znajdz (napis1,napis2);
zamien (napis1,i,napis3);
cout << napis1;
return 0;
}
Cały szkopuł tkwi w części:
fgets (napis1,sizeof(napis1),stdin);
cout << "Enter a string to change from: " << endl;
fgets (napis2,sizeof(napis2),stdin);
cout << "Enter a string to change to: " << endl;
fgets (napis3,sizeof(napis3),stdin);
A mianowicie - wpisuję pierwszy napis, następnie drugi, ale program "pomija" wpisywanie napisu trzeciego - przechodzi od razu do następnych linii programu. Jak sobie z tym poradzić?