使用C#在字符数组中分配转义序列

时间:2015-09-22 09:04:46

标签: c# arrays character newline

我需要修改一个字符数组,包括新行(' \ n'),这样当我打印char数组时,它应该在格式化时打印元素。

当我在循环中删除这些注释时,我不知道它是如何工作的,为什么它在foreach循环中不起作用。

任何人都可以帮助我吗???

     int row, col;
     row = col = 2;
     int j;
     char[] ch = new char[ row * col + row ];
     for( int i = 0; i < 2; i++ ) {
        for( j = 0; j < 2; j++ ) {
           ch[ i * col + j ] = 'a';
           //Console.Write(ch[ i * col + j ]);
        }
        ch[ i * col + j ] = '\n';
        //Console.Write(ch[ i * col + j ]);
     }
     Console.WriteLine("Character Array:");
     foreach( char c in ch ) {
        Console.Write(c);
     }

我的输出应为:

    aa
    aa

4 个答案:

答案 0 :(得分:2)

因为您覆盖了“\ n”,所以需要为\ n字符保留一个额外的列。 这对我有用:

int row, col;
row = col = 2;
col = 2;
int j;
char[] ch = new char[ row * (col+1) ];
for( int i = 0; i < 2; i++ ) {
    for( j = 0; j < 2; j++ ) {
        ch[ i * (col+1) + j ] = 'a';
        //Console.Write(ch[ i * col + j ]);
     }
     ch[ i * (col+1) + j ] = '\n';
     //Console.Write(ch[ i * col + j ]);
}
Console.WriteLine("Character Array:");
foreach( char c in ch ) {
    Console.Write(c);
}

您可以通过输出您编写的数组的索引来轻松检查这些问题,在您的代码中,您将向该数组的相同索引写入两次。

编辑:没有必要分配更多字符row*col+row是正确的,但你需要(col + 1)在循环中。

编辑2 更好地在分配数组时使用(col + 1),现在它只能工作,因为row = col。

答案 1 :(得分:0)

你正在压倒你的价值观。使用下面的代码

    int row, col;
        row = col = 2;
        int j;
        char[] ch = new char[row * col + row];
        for (int i = 0; i < ch.Length; i++)
        {
            for (j = 0; j < 2; j++)
            {
                ch[i + j] = 'a';
                //Console.Write(ch[ i * col + j ]);
            }
            ch[i + j] = '\n';
            i = i  + j;               
            //ch[i * col + (j+1)] = '\n';
            //Console.Write(ch[ i * col + j ]);
        }
        Console.WriteLine("Character Array:");
        foreach (char c in ch)
        {
            Console.Write(c);
        }

答案 2 :(得分:0)

您的代码正在将值重新分配给相同的索引

尝试以下代码:

int row, col;
     row = col = 2;
     int j;
     char[] ch = new char[ row * col + row ];
     for( int i = 0; i < 2; i++ ) {
        for( j = 0; j < 2; j++ ) {
           ch[ i * col + (j+i) ] = 'a';
           //Console.Write(ch[ i * col + j ]);
        }
        ch[ i * col + (j+i) ] = '\n';
        //Console.Write(ch[ i * col + j ]);
     }
     Console.WriteLine("Character Array:");
     foreach( char c in ch ) {
        Console.Write(c);
     }

答案 3 :(得分:0)

只是做:

int col = 3;

您需要再允许一列来存储\n的值。