2012-02-14 86 views
0

我需要一種方法來從2d陣列中串聯字符串。 我開始創建一個50x50二維數組,初始化爲空白點(又名「」,只是空格)。然後我用fgets填充每一行,每行都有一個字符數組,它們組成一個字符串。來自2d陣列的Concat字符串

例如

H I T H E R E 
H E L L O 
W O R L D 

和空的空間保持爲空格。

現在,當我打印它時,由於每行長度爲50個點,所以我需要打印「HI THERE HELLO WORLD」,每個單獨的字符串之後沒有所有空格。

這是我到目前爲止。

void printArray(char matrix[arraySize][arraySize]){ 
    int i,j; 
    int tempArrayCounter =0; 
    int tempArray[inputLineNumber * 50]; 
    for(i = 0; i< arraySize; i++){ 
     for(j = 0; j<arraySize;j++){ 
      printf("%c,",matrix[i][j]); 
     } 
     printf("\n"); 
    } 
    for(j=0; j< inputLineNumber;j++){ 
     for (i = 0; matrix[i][j] != '\0'; i++){ 
      tempArray[tempArrayCounter] =matrix[i][j]; 
      tempArrayCounter++; 
     }    

    }   
    printf("%s\n", tempArray); 
} 

忽略該函數的前半部分。它所做的就是展示整個50x50二維陣列的外觀。

任何幫助表示讚賞。 感謝

編輯

我會添加我用來填充數組如果它可以幫助的代碼。

void readInput(char matrix[arraySize][arraySize]){ 
//inputLineNumber is the current row of the input 
inputLineNumber = 0; 

/* 
when the line is not empty, add the line into matrix 
*/ 
char *p; 
char currentline[arraySize]; 
fgets(currentline,arraySize, stdin); 
if((p = strchr(currentline, '\n')) != 0){ 
      *p = '\0'; 
    } 
while(strcmp(currentline, "\0")!=0){ 

    int k; 
    int inputlength = (int)strlen(currentline); 
    for (k = 0; k< inputlength ;k ++) 
     matrix[inputLineNumber][k] = currentline[k]; 
    fgets(currentline,arraySize, stdin); 
    if((p = strchr(currentline, '\n')) != 0){ 
      *p = '\0'; 
    } 
    inputLineNumber++; 
    } 
} 
+1

請清理您的代碼(使用一致的縮進,刪除不必要的內容等)。讓我很容易幫助你,不難:) – 2012-02-14 01:08:59

+1

對不起。我第一次使用VI,並且在我看來,保持它像日食一樣乾淨並不容易:( – 2012-02-14 01:09:38

+0

'gg = G'會縮進Vim中的所有內容 – YXD 2012-02-14 01:11:45

回答

1

初始化您的數組NUL字符('\0')代替空格,並使用循環來打印每行字符串。

+0

我很想用nul字符來初始化它,但不幸的是創建數組的代碼已經發給我們了 – 2012-02-14 01:12:27

+0

然後當你填充它時,在文本後加上一個nul字符 – asaelr 2012-02-14 01:13:43

+0

我已經有了。 – 2012-02-14 01:23:17

0

你似乎主要是在正確的軌道上,但你需要確保做兩件事:確保正確null終止最終數組,並確保在行之間插入空格。