Propozycja bez: char wiersz[10000]; w odniesieniu do tego kodu co podałeś,
dane.txt
Ala ma kota
a kot ma Ale.
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
fstream plik;
plik.open("dane.txt", ios::in);
if(plik.is_open())
{
string wiersz;
while (getline(plik, wiersz))
{
for (int i=0; i<wiersz.size(); ++i)
{
if (wiersz[i] == 13)
cout << endl;
else
{
if (wiersz[i] != 32 && wiersz[i] >= 65)
{
if (wiersz[i] >= 97 && wiersz[i] <= 122) //gdy napotkamy małą literę zamieniamy ją na dużą
cout << (char)(wiersz[i]-32); //przesuwając o 32 miejsca w kodzie ASCII
else
cout << (char)(wiersz[i]+32);
} else
cout << wiersz[i];
}
}
}
}
else
cout<<"Nie udało się otworzyć pliku";
plik.close();
return 0;
}
ale tu, aż "się prosi" o użycie switch-a,
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
fstream plik;
plik.open("dane.txt", ios::in);
if(plik.is_open())
{
string wiersz;
while (getline(plik, wiersz))
{
for (int i=0; i<wiersz.size(); ++i)
{
switch (wiersz[i])
{
case 13:
cout << endl;
break;
case 65 ... 90:
cout << (char)(wiersz[i]+32);
break;
case 97 ... 122:
cout << (char)(wiersz[i]-32);
break;
default:
cout << wiersz[i];
}
}
}
}
else
cout<<"Nie udało się otworzyć pliku";
plik.close();
return 0;
}
żeby uzyskać ten efekt, co poniżej, na "wyjściu", spróbuj dalej sam przerobić kod
alA mA kotA
A kot mA ale.
Zamienilem 5 wystapien 'a' na 'A' oraz 2 wystapienia 'A' na 'a'.