[ Intex @ 28.07.2011. 16:14 ] @
pri pokretanju programa se desava nesto sto ne bi trebalo. pogledajte sliku: http://www.imageupload.org/get...ee38035be92f2689a7cfa148b33d5b http://www.imageupload.org/?d=75CE6F731 |
[ Intex @ 28.07.2011. 16:14 ] @
[ Mihajlo Cvetanović @ 28.07.2011. 16:51 ] @
U scanf funkciji moraš da daš pointer na početak bafera u koji će scanf funkcija da upiše učitani tekst. Početak bafera je &A[0], a ono što si ti stavio (&A[DIM]) je kraj bafera.
[ staticInt @ 28.07.2011. 16:54 ] @
Samo stavis scanf("%s", A);
Edit: Ah sad vidim da me je Mihajlo pretekao i dao lepo objasnjenje :) [ X Files @ 28.07.2011. 17:00 ] @
Pretekao bi i mene, da nisam prethodno osvežio stranicu. Imao sam predosećaj da je "tu negde", i bio je ti pre "2s".
Elem, @Intex Slike slobodno uploaduj na ES. Tako imamo bolji integritet pitanja i odgovora. [ Intex @ 29.07.2011. 17:48 ] @
Hvala ljudi, pomoglo je. Stavih ovaj manji primer da izdvojim problem, da se ne jurimo po dugačkom kodu. :)
A našao sam u nekim skriptama, knjigama itd. da se koristi nešto kao '\0' za kraj stringa. Da li se taj znak automatski unosi kad se pritisne enter? Treba li da računam i na taj znak kada definišem dimenziju stringa? Citat: ok, imaću to na umu. :) [ the_tosic @ 29.07.2011. 17:56 ] @
Potrebno je i njega da racunas. Ako citas string sa scanf("%s", s); bice i /0 ucitan.
[ X Files @ 29.07.2011. 18:09 ] @
'\0' je takozvani terminator niza karaktera, tj, to je znak koji govori gde je kraj stringa.
ENTER ce proizvesti NULU na kraju. Treba i nju uracunati u velicinu niza. Inace, odgovor na ovo pitanje mozes i sam dobiti ako napravis neki TEST primer tipa: Code: #include <stdio.h> #include <stdlib.h> #define DUZINA_STRINGA 20 int main() { int i; char niz[DUZINA_STRINGA]; printf("Unesite string:"); scanf("%s", niz); printf("Uneli ste: %s\n\n"); printf("SADA CEMO DA ODVOJIMO SLOVO PO SLOVO SVAKOG ELEMENTA:\n"); for (i=0; niz[i] != '\0'; i++) printf("niz[%d]: ASCII znak: %c, ASCII broj: %d\n", i, niz[i], niz[i]); printf("SADA CEMO DA ISPISEMO POSLEDNJI ELEMENT (TERMINATOR STRINGA):\n"); printf("niz[%d]: ASCII znak: %c, ASCII broj: %d\n", i, niz[i], niz[i]); return 0; } Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|