我正在创建一个简单的wordsearch生成器,但是在通过函数传递二维数组并编辑内部值时遇到了问题。我已经在main中声明了我的数组:
char tableValues[xsize-1][ysize-1];
我用 - in main填充数组中的每个点,然后将其传递给一个用随机字母填充数组并返回的函数。
void fillTable(char *tableValues){
for ( int i = 0 ; i < xsize ; i++ ){
for ( int j = 0 ; j < ysize ; j++ ){
if ( tableValues[i][j]=='-')
tableValues[i][j] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand () % 26];
}
}
}
我的问题是错误会在&#34; tableValues [i] [j]&#34;部分,我不知道我怎么用指针编辑数组中的各个点。非常感谢任何帮助,谢谢
我将我的功能称为
fillTable((char *)tableValues);
答案 0 :(得分:1)
尝试this,
void fillTable(char *tableValues){
for ( int i = 0 ; i < xsize ; i++ ){
for ( int j = 0 ; j < ysize ; j++ ){
if ( *((tableValues +i*(xsize-1))+j)=='-')
*((tableValues+i*(xsize-1))+j) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand () % 26];
}
}
}
答案 1 :(得分:1)
您正在传递一个2d数组,并且该函数需要一个指向char
的指针,该指针不兼容,特别是使用两个下标运算符访问它是错误的,您需要将您的函数签名更改为
char (int xsize, int ysize, char array[xsize][ysize])
{
}
不要将xsize
和ysize
声明为全局变量,只需将它们传递给函数,这样函数就可以重复使用,否则在函数中几乎没有什么好处。 / p>
答案 2 :(得分:0)
该功能应定义为
void fillTable( char ( *tableValues )[ysize-1], int rows )
{
for ( int i = 0 ; i < rows ; i++ )
{
for ( int j = 0 ; j < ysize - 1 ; j++ )
{
if ( tableValues[i][j] == '-' )
tableValues[i][j] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand () % 26];
}
}
}
前提是ysize
是某个定义的常量。
否则,如果您的编译器支持可变长度数组,则可以将其定义为
void fillTable( int rows, int cols, char tableValues[rows][cols] )
{
for ( int i = 0 ; i < rows ; i++ )
{
for ( int j = 0 ; j < cols ; j++ )
{
if ( tableValues[i][j] == '-' )
tableValues[i][j] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand () % 26];
}
}
}