爲什麼會出現錯誤的輸出從一個函數返回一個字符串
OUTPUT: 輸入烏爾名字: saurav 你的名字是SA-(
#include <stdio.h>
#include <conio.h>
char * func();
int main()
{
printf("Your name is %s\n",func());
return 0;
}
char* func()
{
char L[10];
printf("Enter ur name:\n");
gets(L);
return L;
}
您正在調用未定義的行爲,方法是返回一個自動變量'L'的地址,該變量在調用者使用該地址之前就已經過去了。有幾十*這個問題的重複,[**這是其中之一**](http://stackoverflow.com/questions/16738954/returning-an-array-from-a-c-function)。並停止使用['gets()'](http://en.cppreference.com/w/c/io/gets)。 – WhozCraig 2014-10-19 18:36:32
您正在返回在'func'範圍內創建的變量的地址 – adam10603 2014-10-19 18:42:00
迂迴點:返回值'L'不是問題。這是'printf'取消引用該值以打印它期望在該地址處的字符串內容。如果代碼是'printf(「你的名字是%p \ n」,func());' - >沒有問題,只是會出現一個數字而不是名字。 – chux 2014-10-19 18:54:35