Miért csak egyszer hajtódik végre a ciklus?
/*<creator>, 2011/11/09
*$ID: sc4.c
*A cél egy olyan program lenne, amely tetszőleges hosszú string-et be tud
*olvasni, majd egy előre nem meghatározott méretű tömbbel/pointerrel tárolja,
*aminek a mérete a stringhez igazodik. N egy számláló, ami a string hosszát
*(lezárókarakterrel együtt) mutatja. A printf-ek csak ellenőrzésre vannak.
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char *cPtr; /*A stringet tároló pointer*/
int N=1; /*Számláló*/
int i=0;
cPtr = malloc(sizeof(char)*N); /*cPtr kezdeti mérete(1 char hosszú)*/
cPtr[0]=1;
/*cPtr inicializálása*/
for(i=0;cPtr[i]!='\0';i++){
N++;
cPtr = realloc(cPtr, strlen(cPtr)+2);
scanf("%c", &cPtr[i]);} putchar('\n');
/*ciklus: az első enterig megy
*ciklusmag: növeli a számlálót, területet foglal a következő
*karakternek, beolvas egy karaktert
*/
/*innentől csak ellenőrzés*/
for(i=0;cPtr[i]!='\0';i++){
printf("%c", cPtr[i]);} putchar('\n');
printf("%d", N); putchar('\n');
return 0;
}
/*a program lefordul gcc-vel, de csak egyszer hajtódik végre a ciklus*/
Nem értem például hogy minek bonyolítani
/*innentől csak ellenőrzés*/
printf("%s", cPtr) kiírja az adott string-et.
cPtr = realloc(cPtr, strlen(cPtr)+2);
Itt feltételezel valamit azt, hogy biztos ki lesz nullázva a foglalt memória.
scanf("%c", &cPtr[i])
Az input beolvasása nem úgy működik. Mikor van a vezérlés a standard inputon és mikor a cikluson?
Tegnap volt ilyen kérdés amire válaszoltam: http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!