来自2d阵列的Concat字符串

时间:2012-02-14 01:00:35

标签: c

我需要一种从二维数组中连接字符串的方法。 我开始创建一个50x50的2d数组,初始化为空白点(又名“”。只是空格)。然后我使用fgets填充每一行,每行都有一个字符数组,形成一个字符串。

例如

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

并将空格保留为空格。

现在,当我打印它时,我需要打印“HI THERE HELLO WORLD”,而不是每个单独的字符串之后的所有空格,因为每行有50个点。

这是我到目前为止所拥有的。

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 2D阵列的样子。

感谢任何帮助。 感谢

修改

如果有帮助,我会添加用于填充数组的代码。

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++;
  }
}

2 个答案:

答案 0 :(得分:1)

将数组初始化为null char('\0')而不是空格,并使用循环将每一行打印为字符串。

答案 1 :(得分:0)

你似乎主要是在正确的轨道上,但你需要确保做两件事:确保正确地终止最终数组并确保在行之间插入空格。