Futuristic
29.1.2013, 17:18
Ovako ide problem, treba da dimnamicki alociram niz char nizova, gde kao unos prvo unosim broj niski, a drugi unos odredjuje koliko ce niska imati elemenata.
Prvi problem na koji sam naleteo je da kad unosim niske one se unesu cele iako sam prethodno naznacio da je duzina niske manja, npr. duzina niske je 3 a ja sam bez problema uneo rec od recimo 5 slova.
To sam resio tako sto sam na kraj niske sam stavio \0, i naizgled resio problem.
Iako mi se sada niske ispisuju do duzine koje hocu, deo iste je ipak tu u memoriji posle \0 koje sam stavio.
Kako da resim problem?
int main()
{
char **reci;
int i;
int n,m;
scanf("%d %d",&n,&m);
reci = malloc(n*sizeof(char*));
for(i=0;i<n;i++)
reci[i] = malloc((m+1)*sizeof(char));
for(i=0;i<n;i++)
{
scanf("%s",reci[i]);
reci[i][m] ='\0';
}
for(i=0;i<n;i++)
printf("%s %c %c\n",reci[i],reci[i][m+1],reci[i][m+2]);
return 0;
}
Btw u printf sam dodao jos ona dva ispisa da bi video ima li ista iza \0
Primer unosa:
4 2
abcde fghijk lmnop qrst
Ispis:
ab d e
fg i j
lm o p
qr t
Prvi problem na koji sam naleteo je da kad unosim niske one se unesu cele iako sam prethodno naznacio da je duzina niske manja, npr. duzina niske je 3 a ja sam bez problema uneo rec od recimo 5 slova.
To sam resio tako sto sam na kraj niske sam stavio \0, i naizgled resio problem.
Iako mi se sada niske ispisuju do duzine koje hocu, deo iste je ipak tu u memoriji posle \0 koje sam stavio.
Kako da resim problem?
int main()
{
char **reci;
int i;
int n,m;
scanf("%d %d",&n,&m);
reci = malloc(n*sizeof(char*));
for(i=0;i<n;i++)
reci[i] = malloc((m+1)*sizeof(char));
for(i=0;i<n;i++)
{
scanf("%s",reci[i]);
reci[i][m] ='\0';
}
for(i=0;i<n;i++)
printf("%s %c %c\n",reci[i],reci[i][m+1],reci[i][m+2]);
return 0;
}
Btw u printf sam dodao jos ona dva ispisa da bi video ima li ista iza \0
Primer unosa:
4 2
abcde fghijk lmnop qrst
Ispis:
ab d e
fg i j
lm o p
qr t