2012-10-13 61 views
1

所以我在進入陣列和數量是數組的一個叫「寫」像這樣功能的長度:輸入字符串數組到函數C++

string write (int n, char t[100]) 

爲了簡單起見,我只會喜歡寫數組的值出絲毫此功能的幫助是這樣的:

{ 
    int i; 

    for (i=1;i<=n;i++) { 
     if (t[i]=='a') { 
     printf("%c" , t[i]); 
     } 
    } 

    return 0; 
} 

int main()只是我做的事情是我用一個scanfn變量,給了從1到n一個「一'arr中的字符串值ay.And我叫寫功能string write(n,t[100]);這裏是整個「主」:

int main() 
{ 
    int i,n; 
    char t[100]; 
    scanf("%i" ,&n); 

    for (i=1;i<=n;i++) { 
      t[i]='a'; 
      } 
string write (n,t[100]); 
return 0; 
} 

我的問題是,爲什麼不會這個簡單的程序來看,我可以進入n的價值,但不會打印出任何東西了呢?我一定會錯過某些東西,比如聲明或調用我對C++的新功能。

+3

我建議你閱讀一本基本的C++書。檢查有關「功能」的章節:如何聲明它們,如何定義它們以及如何調用它們。 –

+0

C++中的數組也是基於零的,所以'我'應該從'0'到'n-1'而不是'1'到'n' –

回答

1

string write(n, t[100])是你的函數原型(省略類型)。如果你想打電話給寫的,你需要做的是這樣

int main() 
{ 
    int i,n; 
    char t[100]; 
    scanf("%i" ,&n); 

    for (i=1;i<=n;i++) { 
      t[i]='a'; 
      } 
write(n,t); 
return 0; 
} 

傳遞t[100]write功能會給你字符串的第100個元素的功能,這是不是你想要做什麼。要傳遞整個字符串,只需使用t

另一個錯誤是你說write寫返回一個字符串。但是,你在你的代碼return 0,要修改寫入原型int write(int n, char t[100]);

1

string write (n,t[100]); 
main

不會調用write功能 - 它定義了一個變量命名爲「寫」的類型爲string,由n元素組成,每個元素的值與t[100]的值相同(這本身就是一個錯誤,因爲這是100元素數組的第101個元素)。
要調用的函數,你應該寫

write(n, t); 

你真的應該基於C得到一個體面的入門書籍++。
這裏有很好的名單,你應該把它作爲你的第一個練習來找到它們。