您好我想创建一个完整停止的2D数组,并在其中插入单词hello,任何人都可以告诉我如何执行此操作吗? 到目前为止,这是我的努力。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char * generate_2D_array( )
{
char a[5] = "hello";
char grid[12][12];
int i, j;
for (i = 0;i < 12; i++)
{
for (j = 0; j < 12; j++)
{
grid[i][j] = ".";
}
}
for (i = 0;i < 5; i++)
{
grid[i][j] = a[i];
}
}
int main(int argc, char *argv[])
{
generate_2D_array( );
system("PAUSE");
return 0;
}
答案 0 :(得分:1)
代码有很多错误:
您的generate_2D_array()
函数被声明为返回char *
,但它不会返回任何内容。
您在generate_2D_array()
中声明了一个局部变量,显然您想要返回该变量,您应该这样做。
您将字符串文字const char *
分配给char
,即
grid[i][j] = ".";
您需要指定字符常量'.'
。
您的代码只需稍加修改即可使用
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void
generate_2D_array(char array[12][13], const char *hello)
{
int i, j;
for (i = 0 ; i < 12 ; i++)
{
for (j = 0 ; j < 12 ; j++)
{
array[i][j] = '.';
}
array[i][j] = '\0';
}
for (i = 0 ; (hello[i] != '\0') && (i < 12) ; i++)
{
array[0][i] = hello[i];
/* ^ ^ here you can't use `j' because it's out of bounds */
/* | so put it on the first row? --------+ */
/* | | */
/* +----------------------------------------+ */
}
}
int main(int argc, char *argv[])
{
char array[12][13];
int i;
generate_2D_array(array, "hello");
for (i = 0 ; i < 12 ; ++i)
printf("%s\n", array[i]);
return 0;
}