5.1.20 · D1 · HinglishC Programming

FoundationsString handling — char arrays, null terminator, strcpy, strcat, strlen, sprintf (dangers)

2,067 words9 min read↑ Read in English

5.1.20 · D1 · Coding › C Programming › String handling — char arrays, null terminator, strcpy, strc

Pehle tum strlen, strcpy, ya sprintf ko parent note mein padh sako, us par har ek tiny symbol ka pehle kuch matlab banana chahiye. Yeh page har ek cheez ko absolute zero se, ek dusre par lean karne ke order mein build karta hai.


1. Ek char — ek box jo ek chhota number hold karta hai

Letter 'A' actually ek shape ke roop mein store nahi hoti. Yeh number ke roop mein store hoti hai. 'A' mein quotes C ka tarika hai yeh kehne ka "mujhe is letter ka ASCII number do" taaki tumhe yaad na rakhna pade ki 'A' hai.

Figure — String handling — char arrays, null terminator, strcpy, strcat, strlen, sprintf (dangers)

Reveal check:

'0' (digit) versus '\0' (terminator) — same hain ya different?
Bilkul different: '0' number 48 hai, '\0' number 0 hai.

2. Ek array — ek row mein kaafi saare boxes, side by side

s[i] mein number index hai — start se kitne boxes walk karne hain. Yeh se shuru hota hai: pehla box s[0] hai, s[1] nahi. Toh ek 6-box array mein valid indices s[0] se s[5] tak hain — last index hamesha size minus one hota hai.

Figure — String handling — char arrays, null terminator, strcpy, strcat, strlen, sprintf (dangers)

Reveal check:

char s[6] mein sabse zyada legal index kya hai?
s[5] (size − 1).

3. Null terminator '\0' — STOP box

Boxes ki ek row mein koi built-in sign nahi hota jo bataye word kahan rukta hai. Toh C last real letter ke baad ek STOP box plant karta hai. Har string function ka kaam hai: tab tak aage chalte raho jab tak STOP na mile.

Figure — String handling — char arrays, null terminator, strcpy, strcat, strlen, sprintf (dangers)

Reveal check:

Ek program '\0' ke bina kaise janega ki string kahan khatam hoti hai?
char boxes ki ek bare row mein koi length store nahi hoti; '\0' hi akaula end marker hai.

4. "..." versus '...' — poora word versus ek letter

Toh "Hi" silently 3 boxes occupy karta hai chahe tumne sirf 2 letters type kiye hon. Yeh hidden extra box woh +1 hai jiske baare mein tum baar baar sunta rehte ho.

Reveal check:

Literal "cat" ko kitne boxes chahiye?
4 — teen letters plus ek '\0'.

5. Ek pointer char * — khud boxes nahi, ek address

Importantly, ek pointer sirf starting address hold karta hai. Usse yaad nahi rehta ki aage kitne boxes hain. Yahi wajah hai C ko '\0' chahiye — pointer akele tumhe nahi bata sakta kahan rukna hai. Deep dive: Pointers in C.

Reveal check:

Kya ek char * yaad rakhta hai ki us ke address ke baad kitne characters aate hain?
Nahi — sirf start; '\0' end mark karta hai.

6. size_t aur counter i, n — indices jo kabhi negative nahi jaate

Reveal check:

Length ke liye int ki jagah size_t kyun use karte hain?
Ek length ya index kabhi negative nahi hota; size_t unsigned counting type hai.

7. !=, =, aur while loop — "walk until STOP" engine

Parent ki core line hai while (s[n] != '\0') n++; — ise padho: "jab tak main jis box ko dekh raha hoon woh STOP box nahi, use count karo aur next par step karo." Yeh har string routine ki shape hai.

Reveal check:

= aur != mein kya antar hai?
= ek value store karta hai; != poochta hai "kya yeh dono unequal hain?".

8. — "cost length ke saath badhti hai"

Yahi wajah hai ki loop ke andar strlen (ya strcat, jo secretly end dhundhne ke liye scan karta hai) call karna slow ho sakta hai: har call poori row ko dobara walk karta hai.

Reveal check:

strlen kyun hai, instant kyun nahi?
Koi stored length nahi, toh ise '\0' tak box by box scan karna padta hai — woh steps hain.

9. Buffer overflow — kisi aisi box mein likhna jo tumhari nahi

Classic cause hai STOP box ka +1 bhool jaana: char buf[5]; strcpy(buf, "Hello"); ko 5 mein 6 boxes chahiye.

Reveal check:

C mein agar tum ek array ke end ke ek box baad likhte ho toh kya hota hai?
Undefined behaviour — koi bounds check nahi; memory corrupt ho sakti hai, crash ho sakta hai, ya exploit ho sakta hai.

Yeh foundations topic ko kaise feed karte hain

char = one byte number

array = boxes in a row

null terminator zero byte

string literal adds STOP for free

pointer holds only the start address

sizeof lies on a pointer

while loop walks until STOP

size_t counter

strlen strcpy strcat

Big-O n scanning cost

buffer overflow if no room

String Handling topic


Equipment checklist

Kya tumhare paas har piece hai? Sirf apni awaaz mein answer dene ke baad reveal karo.

Ek char actually kya store karta hai?
Ek byte — ek number jo ASCII ke zariye letter ki tarah interpret hota hai.
char s[6] ka pehla element kaise likha jata hai, aur aakhri?
s[0] pehla, s[5] aakhri (index = size − 1).
'\0' kya hai aur uski numeric value kya hai?
Null terminator, ek char jo number hold karta hai.
"cat" kitne boxes occupy karta hai?
4 — teen letters plus '\0'.
'0' aur '\0' mein antar?
'0' hai (ek digit); '\0' hai (terminator).
Ek char * kya store karta hai, aur kya store NAHI karta?
Yeh start address store karta hai; yeh length store NAHI karta.
sizeof buf galat kyun ho sakta hai?
Agar buf ek pointer hai, toh sizeof pointer ka size deta hai, buffer ka nahi.
while (s[n] != '\0') n++; ko plain words mein padho.
Jab tak yeh box STOP box nahi, use count karo aur aage step karo.
strlen kyun hai?
Koi stored length nahi, toh yeh '\0' tak har box scan karta hai.
Ek line mein buffer overflow kya hai?
Ek array ke last legal box ke baad likhna — C mein undefined behaviour.