dzień dobry,
Mam taką funkcję;
void liczba_znakow()
{
char wyraz[5][21];
FILE *plik=fopen("anagram.txt","r");
File *wynik=fopen("odp_4a.txt","w");
do
{
if(fscanf(plik, "%s%s%s%s%s", wyraz[0], wyraz[1], wyraz[2], wyraz[3], wyraz[4])<=0) break;
if((strlen(wyraz[0])==strlen(wyraz[1]))&&(strlen(wyraz[2])==strlen(wyraz[3]))&&(strlen(wyraz[4])==strlen(wyraz[0]))&&(strlen(wyraz[2])==strlen(wyraz[0])))
fprintf(wynik, "%S %s %s %S %s\n", wyraz[0], wyraz[1], wyraz[2], wyraz[3], wyraz[4]);
}while(1);
fclose(wynik);
fclose(plik);
}
Chciałbym to samo zapisać w c++ - poniżej, ale zamiast fscanf(), musiał bym zapewno użyć getline'a, ale cos kombinuje kombinuje i nie wychodzi, słowa w pliku anagramy.txt są oddzielone spacją, czyli próbowałem tak:
for(int i=0; i<5; i++)getline(inFile,wyraz[i]," ")
, ale coś źle kombinuje. Z góry, dzięki za pomoc.
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
void tyle_samo_znakow()
{
char wyraz[5][22];
ifstream inFile;
inFile.open("anagram.txt");
ofstream outFile;
outFile.open("ZADANIE_X_.txt");
do{
if(/*/inFile>>wyraz[0]>>wyraz[1]>>wyraz[3]>>wyraz[4]/*/) <= 0)break;
if(strlen(wyraz[0])==strlen(wyraz[1]) && strlen(wyraz[2])==strlen(wyraz[3]) && strlen(wyraz[4])==strlen(wyraz[0]) && strlen(wyraz[2])==strlen(wyraz[0])) outFile<<wyraz[0]<<wyraz[1]<<wyraz[2]<<wyraz[3]<<wyraz[4];
}while(true);
outFile.close();
inFile.close();
}
int main()
{
tyle_samo_znakow();
system("PAUSE");
return 0;
}