對於一個項目,我必須要求用戶輸入一個文件名,並且我正在使用getchar
以字符爲單位讀取它。使用類似代碼時出現奇怪的編譯器投訴
從主,我打電話功能char *coursename= introPrint(); //start off
打印使用說明並獲得第一位的輸入。該函數被定義爲
char *introPrint(){
int size= 20;
int c;
int length=0;
char buffer[size];
//instructions printout, cut for brevity
//get coursename from user and return it
while ((c=getchar()) != EOF && (c != '\n')){
buffer[length++]= c;
if (length==size-1)
break;
}
buffer[length]=0;
return buffer;
}
這基本上是相同的代碼我寫詢問用戶輸入,以星號代替字符回聲,然後打印出結果。在這裏,雖然,我得到了返回聲明的function returns address of local variable
警告。那麼,爲什麼我從其他程序沒有收到警告,但爲此代碼觸發了一個警告?
有意義。除了製作全局變量之外,還有其他選擇嗎?\ – Jason 2011-03-20 16:07:28
@Jason:更新了我的答案。 – 2011-03-20 16:07:59
是的。分配內存或使用靜態緩衝區。 – ThiefMaster 2011-03-20 16:09:49