2016-10-21 74 views
-2
#include <stdio.h>  

void main() 
{ 
    char couples[3][50] = { "Paul Kathy", "John Nora", "Martin Mary" }; 
    char husbands[3][50]; 
    char wives[3][50]; 
    int i = 0; 
    int j = 0; 

    puts("Husbands: "); 
    for (i = 0; i < 3; i++) 
    { 
     while (couples[i][j] != ' ') 
     { 
      couples[i][j] = husbands[i][j]; 
      j++; 
     } 
     husbands[i][j] = '\0'; 
     puts(husbands[i]); 
     j = 0; 
    } 

} 

我已經創建了一個類似於此的程序,它運行完美。但是,雖然這確實生成和編譯成功,但它不能正確運行。從本質上講,我試圖將夫妻分成基於空間特徵的獨立字符串。我究竟做錯了什麼?在數組中使用循環C

+4

'main'有兩個有效簽名:'int main(void)'和'int main(int,char **)'。任何教你的文學都應該避免。尋找更好的學習材料,掌握C的基礎知識並不難。「 – Oka

+0

」它運行不正常「?它有什麼作用? –

+0

請參閱[什麼是main()'在C和C++中返回](http://stackoverflow.com/questions/204476/)以瞭解什麼是和不允許的全部細節。 void main()允許的平臺數量很小。 –

回答

1

嘗試一下簡單。該sscanf()功能可以從字符串,而方便地提取數據:

#include <stdio.h> 

int main(void) 
{ 
    char couples[3][50] = { "Paul Kathy", "John Nora","Martin Mary" }; 
    char husbands[3][50]; 
    char wives[3][50]; 
    int i = 0; 

    for (i = 0; i < 3; i++) 
    { 
     /* Extract husband and wife names. You know they are separated by a space. */ 
     sscanf(couples[i], "%s %s", husbands[i], wives[i]); 
    } 
} 

原代碼的問題包括:

  1. 情侶繩漸漸過度寫的這是未初始化字符串丈夫。

  2. 不提取妻子的名字。

+1

你應該解釋你在做什麼(並且放棄不應該在原始問題中的樣板評論)。你還應該解釋原始代碼有什麼問題 - 爲什麼它不工作? –

+0

@JonathanLeffler感謝您的反饋。我已經更新了我的答案。請檢查它。 – MayurK

3

這是你的問題:

couples[i][j] = husbands[i][j]; 

您分配husbandscouples,而不是周圍的其他方法,因爲你需要。