Nem értem mi a pobléma? Segmentation fault, házi feladat
main-t nem lehet módosítani, csak az strReverse függvényt. Igazából csak a nullpointer elleni védelmet raktam bele de nem műkődik.
A main() függvényt a tanár adta, az amúgy is csak a teszteket tartalmazza. A feladatot pedig a következő meg kell fordítani a kapott stringet, tehát a betűk a végéről az elejére kerülnek és fordítva.
eredeti feladat:
/**
strReverse
reverse the given string
\ingroup strings
\param str string to reverse str can be NULL
\return the new reversed string
Caller must free the copy
*/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char *strReverse(const char *str);
int main()
{
char empty[]="",
beginSpace[]=" asdf",
endingSpace[]="asdf ",
middleOfSpace[]="as df",
beginTab[]="\tasdf",
endingTab[]="asdf\t",
middleOfTab[]="as\tdf",
alphaNumeric[]="asd234f1",
onlyNumeric[]="432432",
onlyAlpha[]="asdgjh",
loop[]="asdfg423ASDFG423asdfg423ASDFG423asdfg",
upperCase[]="VALAMI",
mixedCase1[]="VALAMI es valami";
printf("testStrReverse started...");
assert(strReverse(NULL)==NULL);
assert(strReverse(empty)==NULL);
assert(strcmp(strReverse(beginSpace), "fdsa ")==0);
assert(strcmp(strReverse(endingSpace), " fdsa")==0);
assert(strcmp(strReverse(middleOfSpace), "fd sa")==0);
assert(strcmp(strReverse(beginTab), "fdsa\t")==0);
assert(strcmp(strReverse(endingTab), "\tfdsa")==0);
assert(strcmp(strReverse(middleOfTab), "fd\tsa")==0);
assert(strcmp(strReverse(alphaNumeric), "1f432dsa")==0);
assert(strcmp(strReverse(onlyNumeric), "234234")==0);
assert(strcmp(strReverse(onlyAlpha), "hjgdsa")==0);
assert(strcmp(strReverse(upperCase), "IMALAV")==0);
assert(strcmp(strReverse(mixedCase1), "imalav se IMALAV")==0);
assert(strcmp(strReverse(loop), "gfdsa324GFDSA324gfdsa324GFDSA324gfdsa")==0);
printf("passed\n");
return 0;
}
/**
strReverse
reverse the given string
\ingroup strings
\param str string to reverse str can be NULL
\return the new reversed string
Caller must free the copy
*/
char *strReverse(const char *str){
if(!str || !*str) return NULL;
getchar();
return NULL;
}
le kéne futnia az első tesztnek, ami ez a sor
assert(strReverse(NULL)==NULL);
megkapja a nullpointert, és null pointert is vár vissza, nos, porgram minden esetben null pointert ad vissza.
Gúnyolódás nélkül is lehet válaszolni.
assert(strReverse(NULL)==NULL);
strReverse függvény megkapja a NULL pointert, ami rögtön az első viszgálaton fent akad "if(!str || !*str) return NULL;", tehát return NULL, azaz vissza is tér vele. A zárójelen belül összehasonlításra kellene kerülnie a két értéknek, de nem értem hogy NULL miért nem egyenlő NULL-al.
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!