Bląd

0

witam
Mam taki malutki problemik :( mianowicie

zrodlo programiku:
#include &ltstdio.h&gt
#include &ltconio.h&gt
#include &ltstring.h&gt
main (void)
{
char znak1, znak2, znak3;
char *ciag_znakow1, *ciag_znakow2;

clrscr();
znak1='a';
znak2=123;
ciag_znakow1="Gall anonim";

printf("Podaj znak3:\n");
scanf("%c",&znak3);

printf("Podaj ciag znakow:\n");
scanf("%s",&ciag_znakow2);

printf("Zmienne zawieraja\n");
printf("Zmienne zawierają:\n");
printf("znak1, znak2,znak3: %c %c %c\n",znak1,znak2,znak3);
printf("ciag_znakow1, ciag_znakow2: %s %s\n",ciag_znakow1, ciag_znakow2);
getch();
return 0;
}
ladnie sie kompiluje, uruchamia, prosi o podanie znaku, pozniej ciagu znakow i ....
wyswietla podany znak ale przy probie wyswietlenia ciagu znakow przerywa program i wypisuje blad : w c++ 4,5 "processor fault", w 5,01 "fault: access violation at 0x40187b: read of adress 0x64646464" bla bla bla...

Czy ktosc wie dlaczego tak sie dzieje ??
(win xp, celeron - ale nie sadze by to bylo przez sprzet)
przy tak prostym programiku siada.. :((
Zgory dziekuje za pomoc.--Pozdrawiam Fox

0

Dziwne jest to co napisales. U mnie (stary poczciwy kompilator
Turbo C++ 3.0) dziala wporzadku. Blad o ktorym pisales pojawil by sie
gdybys napisal:

printf("ciag_znakow1, ciag_znakow2: %s %s\n",*ciag_znakow1, *ciag_znakow2);

(tzn. z *). Jedynym mankamentem tego programy jest to ze jezeli
tego ciagu znakow nie wpisze sie ze spacja na koncu (tego wymaga
funkcja scanf()) to po prostu lancuch znakow nie wyswietli sie.
Moze nie podales calego kodu?
--Pozdrawiam
Ojciec (Delphi/C++)

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