char *a;
scanf("%s", a);
Czy to wyrażenie jest poprawne?
char *a;
a = "HELO WORLD";
A czy to wyrażenie jest poprawne?
char *a;
scanf("%s", a);
Czy to wyrażenie jest poprawne?
char *a;
a = "HELO WORLD";
A czy to wyrażenie jest poprawne?
Moim zdaniem to nie jest poprawne poniewaz dlla char używa sie %c a nie %s ale nie wiem jestem dopiero na poczatku zabawy z C
char *a;
scanf("%s", a);
Czy to wyrażenie jest poprawne?char *a;
a = "HELO WORLD";
A czy to wyrażenie jest poprawne?
W pierwszej części deklarujesz wskaźnik na zmienną znakową i próbujesz czytać do tej zmiennej przy pomocy scanf (%s czy %c to tylko kwestia interpretacji), owszem do scanf należy podać adres zmiennej (wskaźnik jest adresem), ale Twój wskażnik nie wskazuje na nic - wcześniej powinieś albo wskazać wskaźnikiem na jakąś zmienną, albo zaalokować dla wskaźnika pamięć.
Drugie - to samo, musisz najpierw albo wskaźniekiem wskazać na jakąś zmienną, albo zaalokować dla niej pamięć.
druga czesc jest kategorycznie zla !!
jezeli masz wskaznik pusty to jezeli wczesniej nie zaalokujesz mu odpowiedniej ilosci pamieci to bedziesz mial wylew czyli core dumped :P
To wlasnie pierwsza czesc jest zla. Druga jest jak najbardziej w porzo.
char* a; // << deklaracja wskaznika do char
a = "HELLO WORLD"; // przypisanie wskaznikowi adresu napisu "HELLO..."
Niestety jedno i drugie jest źle.
char a[80]; //albo dynamicznie malloc
scanf("%s", a);
i wtedy będzie poprawne chyba ze ktoś poda więcej niż 79 znaków,
dokładniejsze info możesz znaleźć tutaj http://www.cplusplus.com/ref/cstdio/scanf.html
//Dopisane
na to wygląda ze wyrażenie:
char * a;
a = "hello world";
też jest porawne zadaje się że tak jak mówił Imp wyrażenie ("hello World") jest zpaisywane w segmencie danych a co za tym idzie jest "statycznie" allokowane w pamieci.
Pierwsze jest złe to pewne
Drugie moim zdaniem jest OK gdyż jest to wskaźnik do napisu, który assembler i tak musi przechowywać w pamięci.
//dopisane
Przykładem może być:
'
char c = "sdasdasdA"[1];
printf("%c", c);