Miért csinálja? (C nyelv)
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.
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!