[C] Problem z wczytywaniem z klawiatury i zapisywaniem do tablicy.

0

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;
}
0

Nie wypisuje do pierwszego białego znaku a wczytuje do pierwszego białego znaku.

0
winerfresh napisał(a)

Nie wypisuje do pierwszego białego znaku a wczytuje do pierwszego białego znaku.

Otóż to, źle się wyraziłem :].

1 użytkowników online, w tym zalogowanych: 0, gości: 1