Witam, niepoprawnie działa mi wczytywanie z klawiatury.
Wejście z klawiatury:
Dzien dobry, witam, czesc i czolem
Wyjście wyj.txt:
Dzien
Czyli wypisuje mi do pierwszej spacji (a konkretniej pewnie, do pierwszego białego znaku).
Drugi problem, to jeśli odpalę wczytywanie z pliku, to program 'gubi' się przy new linie, czyli przy enterze. Jeśli mam plik wej.txt:
//Witam Cię, cześć i czołem.
No hej.
Lubię placki.//
To na wyjściu mam: wyj.txt:
Lubię placki.
Bardziej znaczące jest dla mnie poprawienie wczytywanie z klawiatury, ale drugi błąd również chciałbym rozwiązać.
#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;
}