Ennek mi baja van?
Figyelt kérdés
#include <stdio.h>
#include <string.h>
int main(){
char t1[]="Nem is olyan nehez";
char t2[]="a programozas";
int k;
k=strlen(t1)+strlen(t2);
char t3[k];
printf("%d\n",k);
printf("%d\n",strlen(t3));
system("pause");
return 0;
}
Miért nem ugyanazt írja ki strlen(t3)-ra mint k-ra?
2014. okt. 15. 14:04
1/7 A kérdező kommentje:
á mindegy gondolom azért mert t3-ba nem raktam bele semmit
2014. okt. 15. 14:06
2/7 anonim válasza:
A 'k' változód a 't1' és 't2' változókban lévő szövegeid hosszának összege.
Az strlen(t3) pedig bármi lehet, mivel nem inicializáltad, az strlen pedig nem a tömb hosszát adja vissza (eleve honnan is tudná), hanem a tömb eleje és a lezáró '/0' közti távolságot.
Inicializálás nélkül az meg vagy van valahol, vagy nincs.
3/7 anonim válasza:
Így nem tudsz változó méretű tömböt létrehozni. Amíg a malloc fv-el nem ismerkedsz meg, hozz létre egy t3[50] méretű tömböt - kicsit csúnya, de érthető és működik.
4/7 anonim válasza:
Dehát ez nem is változó méretű tömb, fordítási időben ismert a mérete.
5/7 anonim válasza:
# 4 az strlen az egy függvény (futásidőben számolja meg), k nem konstans
6/7 anonim válasza:
na jó, nem tudom, ez hogy a fenébe fordul le :o
rég volt már a C(++)
7/7 anonim válasza:
Hát, ez konkrétan k=2-t ad ki magából. Gondolom nem ez a jó eredmény.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!