用空格替换第一行

时间:2009-12-03 10:20:12

标签: c replace multidimensional-array

我正在尝试用空格替换第一行,这里有什么问题?

#include <stdio.h>
int main(void){
    char text[5][10]={
        {'a','a','a','a','a','a','a','a','a','\0'},
        {'a','a','a','a','a','a','a','a','a','\0'},
        {'a','a','a','a','a','a','a','a','a','\0'},
        {'a','a','a','a','a','a','a','a','a','\0'},
        {'a','a','a','a','a','a','a','a','a','\0'},
    };


    for (int i=0;i<10;i++){
        text[i]=' ';
    }

    for (int i=0;i<5;i++){
        printf("%s\n",text[i]);
    }

    return 0;
}

8 个答案:

答案 0 :(得分:3)

你没有“跨越”索引,你正在索引“向下”。尝试:

text[0][i] = ' ';

覆盖第一行的字符。

另请注意,您有一个Obi-wan;你的循环也会用空格覆盖终止字符。

答案 1 :(得分:3)

你有两个问题。

  1. 您只在第一个循环中提供一个维度。它应该是:

    text[0][i]=' ';

  2. 你只有9个'a',但你要用10个空格替换,所以你将覆盖第一行的空终止符。所以我认为你的整个循环应该是:

  3. for (int i=0;i<9;i++){
        text[0][i]=' ';
    }
    

答案 2 :(得分:3)

你必须使用

for (int i=0;i<10;i++){
        text[0][i]=' ';
    }

现在text将是

text[5][10]={
                                  {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
                                  {'a','a','a','a','a','a','a','a','a','\0'},
                                  {'a','a','a','a','a','a','a','a','a','\0'},
                                  {'a','a','a','a','a','a','a','a','a','\0'},
                                  {'a','a','a','a','a','a','a','a','a','\0'},
                                  };

for (int i=0;i<5;i++){
        text[i][0]=' ';
    }

现在text将成为

text[5][10]={
                                  {' ','a','a','a','a','a','a','a','a','\0'},
                                  {' ','a','a','a','a','a','a','a','a','\0'},
                                  {' ','a','a','a','a','a','a','a','a','\0'},
                                  {' ','a','a','a','a','a','a','a','a','\0'},
                                  {' ','a','a','a','a','a','a','a','a','\0'},
                                  };

选择您想要的任何解决方案。 :)

答案 3 :(得分:1)

我认为你应该适应

text[i][0] = ' ';

答案 4 :(得分:1)

我会再往前走 - 你在第一行“行”结束时覆盖空值。将循环设置为迭代超过0..9:

for (int i=0;i<9;i++){
        text[0][i]=' ';
}

答案 5 :(得分:1)

 for (int i=0;i<9;i++){
     text[0][i]=' ';
 }

答案 6 :(得分:0)

  • 使您的数组长度为11: char text [5] [10] to char text [5] [11]并相应地更改初始化。

  • Chanage for for循环,条件'i&lt; 10'到'i&lt; 9'

问题在于索引计数。

答案 7 :(得分:-1)

它的双维数组而不是单维,这就是为什么这不起作用。