Kezdőoldal » Számítástechnika » Programozás » Hogyan tudom ezt kijavítani a...

Hogyan tudom ezt kijavítani a C programomban?

Figyelt kérdés

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);

}



2016. márc. 19. 14:58
1 2
 11/12 anonim ***** válasza:

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:

[link]

2016. márc. 19. 16:44
Hasznos számodra ez a válasz?
 12/12 anonim ***** válasza:
11: Szép, példás.
2016. márc. 19. 19:07
Hasznos számodra ez a válasz?
1 2

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!