我是C的初學者,而且我比較笨,所以我希望有人能幫忙。如何從C函數中的每個調用返回不同的字符串?
我有一個方法返回一個字符串取決於某個數字是什麼。
char* getStr(int aNumber)
{
char *str= malloc(15);
if(!str)
return NULL;
if(aNumber == 0)
str = "this";
else if(aNumber== 1)
str = "that";
// other "else if" statements
else
str= "nope";
return str;
}
在另一種方法我:現在
char *myString = getStr(number1);
printf("%s", myString);
char *myOtherString = getStr(number2)
printf("%s", myOtherString);
我的問題是myOtherString相同的myString。在getStr()方法而不是malloc()中使用strdup()時,同樣也會出現同樣的效果,只是試圖返回str而不會導致隨機符號被打印出來(diamons和問號)。
如何更改getStr()方法以允許每次調用該方法時輸出字符串都不相同?或者我必須以某種方式釋放分配給字符串的空間,然後在另一個方法中調用它?
'number1'和'number2'的值是多少?你回來的字符串是什麼? – jramirez
在這種情況下,對malloc的調用是無關緊要的,因爲您將指針更改爲通過if-else語句發生的任何靜態字符串(str =「that」將str更改爲指向包含「 ,它不會將「that」分配給已經指向的空間str)。此外,即使看起來你正在嘗試返回str,你也會返回reg。 – IllusiveBrian
爲什麼'返回reg;'?什麼是'reg'? –