Hogyan tudom ezt kijavítani a C programomban?
Sziasztok! Miért csinálja azt a programom, hogyha visszafelé nagybetűkkel akarom kiiaratni a Hello world! mondatom, akkor ezt kapom helyette: ômuco!DLROW OLLEH. Nem mindenhol ír ki az elejére ilyesmiket. Kipróbáltam a Hogy vagy?-gyal is, az eredmény: ômucoD\?YGAV YGOH. Hogyan tudom kijavítani ezt a hibát a C programomban? Miért csinálja, és hogyan javítható?
#include <stdio.h>
#include <string.h>
char* reverse(const char* text)
{
char *copy = (char*)malloc(strlen(text) + 1); // Helyet csinál a kópiának.
int i = 0;
do{
copy[i]=toupper(text[i]); //Átesz mindent nagybetűvé.
i++;
}while( text[i] != '\0' );
strrev(copy); //Átalakítja visszafelé.
return copy;
if (text==NULL) //Ha a megadadott szöveg NULL, akkor térjen vissza a NULL értékhez.
return NULL;
}
int main()
{
const char* text="Hello world!";
char* reversed = reverse(text);
printf("\nBefore: %s\nAfter: %s\n",text,reversed);
// "!DLROW OLLEH"
free(reversed);
}
Elég ha begyűröd az első sorba hogy
if(text == NULL) return NULL;
Nem kell else mert ha ez igaz úgy is kilép, ha nem igaz akkor meg továbbmegy. De a text soha sem lesz NULL, ellenben a malloc eredménye lehet NULL ha nem sikerül a memória foglalás.
Itt van hogy én hogyan írnám át a kódod hogy minden szempontból megfeleljen:
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!