No właśnie użyłem getsa, tylko mam taki problem, że nie wczytuje mi nic przed pierwszą spacją, i musiałem wcześniej użyć scanfa, bo sam gets nie działał, wie ktoś jak to poprawić?
Kod: Zaznacz cały
#include "stdafx.h"
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define MAXSZER 78
#define MAXWYS 20
int main(void)
{
char imie[30];
char nazwisko[30];
char adres1[30];
char adres2[30];
char zawod[30];
printf("Podaj swoje imie:\n");
scanf("%s", &imie);
printf("Podaj swoje nazwisko:\n");
scanf("%s", &nazwisko);
printf("Podaj swoj zawod:\n");
scanf("%s", zawod);
printf("Podaj swoj adres - ulica/mieszkanie:\n");
scanf("%s", adres1);
gets(adres1);
printf("Podaj swoj adres - kod pocztowy/miasto:\n");
scanf("%s", adres2);
gets(adres2);
int szerokosc;
int wysokosc;
int linie;
int a;
int b;
int i;
int j;
for(wysokosc = 0 ; wysokosc <= MAXWYS ; wysokosc ++)
{
if(wysokosc == 0 || wysokosc == MAXWYS/4 || wysokosc == MAXWYS/4 + MAXWYS/4 || wysokosc == MAXWYS - MAXWYS/4 || wysokosc == MAXWYS)
{
for(szerokosc=0 ; szerokosc <= MAXSZER ; szerokosc++)
{
if(szerokosc == 0 || szerokosc == MAXSZER/3 || szerokosc == MAXSZER - (MAXSZER/3) || szerokosc == MAXSZER ) //rysowanie poziomych linii
printf("+");
else
printf("-");
}
}
else if(wysokosc == 1 || wysokosc == MAXWYS/4 + 1 || wysokosc == MAXWYS/4 + MAXWYS/4 + 1 || wysokosc == MAXWYS - MAXWYS/4 + 1) // warunek linii
// wysrodkowanie i wypisanie imienia i nazwiska
{
j = 0;
while(j<3)
{
printf("|");
if((strlen(imie)+strlen(nazwisko)+1)%2 == 0) //Czy parzyste ze spacja
{
for(i=0;i <(MAXSZER/3/2) - ((strlen(imie)+strlen(nazwisko)+1)/2) - 1 ;i++) // 1 z lewej
printf(" ");
printf("%s %s", imie, nazwisko);
for(i=0;i <(MAXSZER/3/2) - ((strlen(imie)+strlen(nazwisko)+1)/2) ;i++)
printf(" ");
j++;
}
else
{
for(i=0;i <(MAXSZER/3/2) - ((strlen(imie)+strlen(nazwisko)+1)/2) - 1 ;i++) // 1 z lewej
printf(" ");
printf("%s %s", imie, nazwisko);
for(i=0;i <(MAXSZER/3/2) - ((strlen(imie)+strlen(nazwisko)+1)/2) - 1 ;i++) // 1 z prawej
printf(" ");
j++;
}
}
printf("|");
} // wysrodkowanie i wypisanie zawodu
else if(wysokosc == 2 || wysokosc == MAXWYS/4 + 2 || wysokosc == MAXWYS/4 + MAXWYS/4 + 2 || wysokosc == MAXWYS - MAXWYS/4 + 2)
{
j = 0;
while(j<3)
{
printf("|");
if(strlen(zawod)%2 == 0)
{
for(i=0;i <(MAXSZER/3/2) - (strlen(zawod)/2) - 1 ;i++)
printf(" ");
printf("%s", zawod);
for(i=0;i <(MAXSZER/3/2) - (strlen(zawod)/2) ;i++)
printf(" ");
j++;
}
else
{
for(i=0;i <(MAXSZER/3/2) - (strlen(zawod)/2) - 2 ;i++)
printf(" ");
printf("%s", zawod);
for(i=0;i <(MAXSZER/3/2) - ((strlen(zawod)+1)/2) + 1 ;i++)
printf(" ");
j++;
}
}
printf("|");
}
// wysrodkowanie i wypisanie adresu1
else if(wysokosc == 3 || wysokosc == MAXWYS/4 + 3 || wysokosc == MAXWYS/4 + MAXWYS/4 + 3 || wysokosc == MAXWYS - MAXWYS/4 + 3)
{
// zliczamy ilosc znakow w ciagu:
int licznik;
licznik = 0;
for (a = 0; adres1[a] != '\0'; a++)
licznik++;
j = 0;
while(j<3)
{
printf("|");
if(licznik%2 == 0)
{
for(i=0;i <(MAXSZER/3/2) - (licznik/2) - 1 ;i++)
printf(" ");
printf("%s",adres1);
for(i=0;i <(MAXSZER/3/2) - (licznik/2) ;i++)
printf(" ");
j++;
}
else
{
for(i=0;i <(MAXSZER/3/2) - (licznik/2) - 2 ;i++)
printf(" ");
printf("%s",adres1);
for(i=0;i <(MAXSZER/3/2) - ((licznik+1)/2) + 1 ;i++)
printf(" ");
j++;
}
}
printf("|");
}
// wysrodkowanie i wypisanie adresu2
else if(wysokosc == 4 || wysokosc == MAXWYS/4 + 4 || wysokosc == MAXWYS/4 + MAXWYS/4 + 4 || wysokosc == MAXWYS - MAXWYS/4 + 4)
{
// zliczamy ilosc znakow w ciagu:
int licznik;
licznik = 0;
for (b = 0; adres2[b] != '\0'; b++)
licznik++;
j = 0;
while(j<3)
{
printf("|");
if(licznik%2 == 0)
{
for(i=0;i <(MAXSZER/3/2) - (licznik/2) - 1 ;i++)
printf(" ");
printf("%s",adres2);
for(i=0;i <(MAXSZER/3/2) - (licznik/2) ;i++)
printf(" ");
j++;
}
else
{
for(i=0;i <(MAXSZER/3/2) - (licznik/2) - 2 ;i++)
printf(" ");
printf("%s",adres2);
for(i=0;i <(MAXSZER/3/2) - ((licznik+1)/2) + 1 ;i++)
printf(" ");
j++;
}
}
printf("|");
}
printf("\n");
}
getchar();
getchar();
getchar();
getchar();
getchar();
getchar();
return 0;
}
Wszystko działa tylko jak zrobić, żeby wczytywało od pierwszego wyrazu?