Czy mógłby mi ktoś pomóc to zrozumieć, program w domyśle ma dynamicznie alokować dodatkową pamięć. W teorii działa poprawnie, ale nie rozumiem szczegółów, takich jak czemu dwa razy printuje mi "Podaj znak o indeksie" no i czemu wynik jest w linijkach pod spodem jeśli nie używam w printcie \n????
Z góry bardzo dziękuje za pomoc
#include <stdio.h>
#include <stdlib.h>
#define ROZ 2
int main()
{
char *napis;
int n=0;
char a;
napis=calloc(ROZ,sizeof(char));
printf("Witam w programie, który dynamicznie wpisuje znaki do tablicy!\n");
do
{
printf("Podaj znak o indeksie %d\n",n);
scanf("%c",&a);
if(n<ROZ)
{
napis[n]=a;
}
else if(n>=ROZ)
{
napis=realloc(napis,(n+1)*sizeof(char));
napis[n]=a;
}
n++;
}while(a!='.');
napis=realloc(napis,(n+1)*sizeof(char));
napis[n]='\0';
printf("|");
for(n=0;napis[n]!='\0';n++)
{
printf("%c|", napis[n]);
}
return 0;
}
I taki jest efekt:
Witam w programie, ktory dynamicznie wpisuje znaki do tablicy!
Podaj znak o indeksie 0
q
Podaj znak o indeksie 1
Podaj znak o indeksie 2
w
Podaj znak o indeksie 3
Podaj znak o indeksie 4
e
Podaj znak o indeksie 5
Podaj znak o indeksie 6
r
Podaj znak o indeksie 7
Podaj znak o indeksie 8
t
Podaj znak o indeksie 9
Podaj znak o indeksie 10
y
Podaj znak o indeksie 11
Podaj znak o indeksie 12
u
Podaj znak o indeksie 13
Podaj znak o indeksie 14
i
Podaj znak o indeksie 15
Podaj znak o indeksie 16
o
Podaj znak o indeksie 17
Podaj znak o indeksie 18
p
Podaj znak o indeksie 19
Podaj znak o indeksie 20
.
|q|
|w|
|e|
|r|
|t|
|y|
|u|
|i|
|o|
|p|
|.|