2016-11-21 69 views
1

我很難將字符數組傳遞給函數並將字符串掃描到函數中。這裏是我的刪節代碼:將數組傳遞給函數並掃描字符串

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#include <ctype.h> 
#include <string.h> 

#define SIZE 20 


void GetWord(char word[]); 

main(void){ 

    char word[SIZE]="     "; 
    GetWord(word); 

    } 

void GetWord(char word[]){ 

    printf("Please enter a word: "); 
    scanf("%s", word); 

    } 

該功能只是在任何大小的條目進行後掛起。

我知道scanf有更好的選擇,但需要使用它。謝謝!

+0

你是指'GetWord(char * word)'? – bansi

+0

@Henry我沒有看到你的代碼有任何問題。 –

+0

你應該定義'main()'的返回類型 - 只有真正古老或者草率的編譯器才允許(C99需要顯式返回類型)。你可能應該打印讀取的單詞。您應該可以將讀取的單詞的大小限制爲19個字節,並用'scanf(「%19s」,word)'加上null。你應該檢查'scanf()'的返回值。當你說'任何尺寸'時,你的意思是'在1或2或3或......字符之後',還是'當尺寸足夠大時 - 可能是30或40或60個字符'?通俗的英語可以允許,儘管第一個是正常的,特別是在計算機上。 –

回答

-1

你必須使用指針。這應該工作:

編輯:我很抱歉,我無法測試它,在手機上。

編輯2:我editted函數的調用。並且在主函數中移動了指針的聲明,所以我們不需要全局變量。

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#include <ctype.h> 
#include <string.h> 

#define SIZE 20 

void GetWord(char * secondWord); 

main(void){ 
char * word; 
GetWord(word); 

} 

void GetWord(char * secondWord){ 

    printf("Please enter a word: "); 
    scanf("%s", secondWord); 

    } 
+1

不是(不完整或完整的)數組在調用時鍵入指針類型嗎? –

+0

您正在傳遞已經是指針類型的參數,所以您不需要*,但也許我錯了。 – someRandomSerbianGuy

+0

因爲它照原樣發送,所以函數的定義反正給它指針的類型。 – someRandomSerbianGuy