我正在嘗試撰寫一個連接 2 個字串的函式。
char* defprint(char z[20]){
char* question=strdup("Insert your new");
strcat(question, z);
return question;
};
問題是當我在 main 中使用該函式時,它只輸出第一個字母:I.. 而字串的其余部分沒有列印出來。我不明白我在這里做錯了什么。
理論上,使用該函式的 main 代碼將繼續
char name = *defprint("name");
printf("%c",name);
我想我的指標做錯了。
uj5u.com熱心網友回復:
對于初學者來說,這個功能
char* defprint(char z[20]){
char* question=strdup("Insert your new");
strcat(question, z);
return question;
};
具有未定義的行為,因為指標指向的分配陣列question沒有空間來容納指標指向的字串z。
第二個問題是試圖在函式字串中只存盤分配的一個字符
char name = *defprint("name");
看來您的意思類似于以下內容
char * defprint( const char *s )
{
const char prefix[] = "Insert your new ";
char *result = malloc( sizeof( prefix ) strlen( s ) );
if ( result != NULL )
{
strcpy( result, prefix );
strcpy( result sizeof( prefix ) - 1, s );
}
return result;
}
//...
char *name = defprint("name");
if ( name ) printf("%s",name);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409631.html
標籤:
