Witam,
mam kilka problemów. Nie będę wchodził w szczegóły, co ma robić mój program - skróciłem go do potrzebnych mi do poprawienia rzeczy.
No więc chodzi o to, że jeśli plik wejściowy składa się ze zwykłego tekstu, to wszystko śmiga. Problem się pojawia, jeśli w pliku tekstowym pojawia się przejście do następnej linii, czyli enter, czyli \n
Wejście wej.txt:
Witam Cię, cześć i czołem. No hej. Lubię placki.
Wyjście wyj.txt:
Witam Cię, cześć i czołem. No hej. Lubię placki.
Wszystko OK. Teraz:
Wejście wej.txt:
//Witam Cię, cześć i czołem.
No hej.
Lubię placki.//
Wyjście wyj.txt:
Lubię placki.
Czyli wypisuje mi tylko ciąg po ostatnim enterze.
Drugi problem: niepoprawnie działa mi wczytywanie z klawiatury.
Wejście z klawiatury:
Dzien dobry, witam Pana
Wyjście wyj.txt (na ekran to samo):
Dzien
Czyli wypisuje mi do pierwszej spacji (a konkretniej pewnie, do pierwszego białego znaku).
#include <windows.h>
#include <stdio.h>
#define SIZE 1000
void wypisz(char wsk1[],char wsk2[])
{
printf("\nF1 - Wczytywanie z pliku (jesli wylaczone -> wczytywanie z klawiatury) %s\n",wsk1);
printf("\nF2 - Zapisywanie do pliku (jesli wylaczone -> zapisywanie na ekran) %s\n",wsk2);
printf("\nF12 - ZAPISZ\n");
}
int main()
{
int dlugosc=0;
int i;
char zdanie[SIZE];
for(i=0; i<SIZE; i++)
zdanie[i]=' ';
char on[]="ON";
char off[]="OFF";
char wsk1[10],wsk2[10];
strcpy(wsk1,off);
strcpy(wsk2,off);
wypisz(wsk1,wsk2);
while(1)
{
if(GetAsyncKeyState(VK_F1))
{
if(strcmp(wsk1,off)==0)
strcpy(wsk1,on);
else
strcpy(wsk1,off);
wypisz(wsk1,wsk2);
}
if(GetAsyncKeyState(VK_F2))
{
if(strcmp(wsk2,off)==0)
strcpy(wsk2,on);
else
strcpy(wsk2,off);
wypisz(wsk1,wsk2);
}
if(GetAsyncKeyState(VK_F12))
{
break;
}
Sleep(200);
}
if(strcmp(wsk1,on)==0)
{
FILE *f=fopen("wej.txt","r");
while(!feof(f))
{
fgets(zdanie,SIZE,f);
}
fclose(f);
dlugosc=strlen(zdanie);
}
if(strcmp(wsk1,off)==0)
{
i=0;
scanf("%s",&zdanie[i]);
i++;
dlugosc=strlen(zdanie);
}
if(strcmp(wsk2,on)==0)
{
FILE *fp;
fp=fopen("wyj.txt", "w");
for(i=0; i<dlugosc; i++)
fprintf (fp, "%c", zdanie[i]);
fclose (fp);
}
if(strcmp(wsk2,off)==0)
{
for(i=0; i<dlugosc; i++)
printf("%c",zdanie[i]);
printf("\n");
system("pause");
}
return 0;
}