Wpisywanie do tablicy wskaźników na char

0

Chciałbym zapytać dlaczego program1 działa zgodnie z moimi przypuszczeniami, tzn. wypisze po kolei string1 string2 i to co wpisze się następnie w konsoli, natomiast program2 wypisuje 3 razy ostatni z wpisanych stringów, dlaczego dwa wcześniejsze zostają nadpisane? I jak to naprawić? pozdrawiam :)

program1:

 #include <stdio.h>

int main()
{

	char *pytania[20], bufor[20];


		pytania[0] = "string1";

		pytania[1] = "string2";

		pytania[2] = gets(bufor);

	printf("\n\n%s\n%s\n%s", pytania[0], pytania[1], pytania[2]);


}

program2:

#include <stdio.h>

int main()
{

	char *pytania[20], bufor[20];


		pytania[0] = gets(bufor);

		pytania[1] = gets(bufor);

		pytania[2] = gets(bufor);

	printf("\n\n%s\n%s\n%s", pytania[0], pytania[1], pytania[2]);


}
 
0

musisz skopiowac ten napis, np przy uzyciu http://www.cplusplus.com/reference/cstring/strcpy/

0

Nie wiem czy rozumiem. Czyli po użyciu gets(bufor) mam zrobić jego kopię poprzez np strcpy(temp, bufor) i potem dopiero temp umieścić w pytanie[0], pytanie[1] itd? :)

1

wlasciwie to nie sluchaj mnie bo bzdury opowiadam :)
nie trzeba ci bufora, w tym wypadku prosciej bedzie uzyc tablicy wielowymiarowej, np tak

#include <stdio.h>
 
int main()
{
	char pytania[3][20];
	gets(pytania[0]);
	gets(pytania[1]);
	gets(pytania[2]);
    printf("\n\n%s\n%s\n%s", pytania[0], pytania[1], pytania[2]);
}
4

Tak, żeby było ciut poprawniej:
używanie gets jest niezalecane, w zasadzie jest ze względu chyba na fakt zgodności wstecznej.
Należy użyć fgets z parametrem stdin...

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