Kezdőoldal » Számítástechnika » Programozás » Miért csinálja? (C nyelv)

Miért csinálja? (C nyelv)

Figyelt kérdés

Az a feladat, hogy olyan függvényt kell írni, amely kap egy kereszt- és egy vezetéknevet, és visszaadja a teljes nevet, azaz összefűzi (de nem használhatjuk a string.h header fájlt). A vezeték- és keresztnév között legyen szóköz, és a végén is egy lezáró 0 karakter.


Nekem a következő a kódom:


#include <stdio.h>

#include <stdlib.h>


char* concatenate (char* s1, char* s2)

{

int v = 0,k = 0, i = 0, j = 0;

for (i = 0; s1[i] != '\0'; i++) v++;

for (j = 0; s2[j] != '\0'; j++) k++;

char* s3 = malloc ((v + k + 2) * sizeof (char));

for (i = 0; i < v; i++) s3[i] = s1[i];

s3[v] = ' ';

for (i = 0; i < k; i++) s3[v + 1 + i] = s2[i];

s3[k] = '\0';

return s3;

}


És teljesen jól összefűzi, viszont amikor az s3[k]- nak odaadom a lezáró 0-t, levágja az egész nevet, és pl abból hogy balogh emese, csak balog marad, pedig a debugger szerint ott van a teljes név összefűzve.



2022. nov. 2. 08:37
 1/2 anonim ***** válasza:
80%

Nyilván azért, mert belebaszol egy lezáró nullát a string közepére.

Egyébként meg használhatnál még randomabb változó neveket, hogy még kevésbé legyen olvasható a kód, úgy lenne az igazi. Mondjuk simán az ábécé betűi sorban.

2022. nov. 2. 09:30
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:
100%
A s3[k] = '\0'; sorban gondold át a k változót.
2022. nov. 2. 11:20
Hasznos számodra ez a válasz?

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

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!