char additional_part()
{
/* ifstream */
ifstream textfile;
textfile.open("ignore.txt");
textfile >> noskipws;
int row = cal_row_ignore_file(); // row = 7
char **ig_word = new char *[row]; // setting up two-dimensional arrays
for (int i = 0; i < row; i++)
{
ig_word[i] = new char[51];
}
for (int i = 0; i < row; i++) // read file contents
{
textfile.getline(ig_word[i], 51, '\n');
}
textfile.close();
/* process */
int w_len[row];
for (int i = 0; i < row; i++)
{
w_len[i] = strlen(ig_word[i]);
}
for (int i = 0; i < row; i++)
{
*ig_word[i] = *u2l(ig_word[i], w_len[i]); // uppercase to lowercase
}
for (int i = 0; i < row; i++)
{
delete[] ig_word[i];
}
delete[] ig_word;
return **ig_word;
}
int main()
{
// data();
char **ig_word = new char *[7]; // setting up two-dimensional arrays
for (int i = 0; i < 7; i++)
{
ig_word[i] = new char[51];
}
**ig_word = additional_part();
for (int i = 0; i < 7; i++)
{
cout << ig_word[i] << endl;
}
return 0;
}
我想做一个二维数组的指针传递,但是在main函数中,接收时英文单词变乱码了,想知道问题原因
你这个代码错误比较多。二维数组的传递一般方法是在函数外申请二维数组,传递进函数,函数内修改内容,main函数中调用之后,data就是修改过的数据。例如:
/**
*@param data 二维数组的指针
*@param m 二维数组的列数
*@param n 二维数组的行数
*/
void func(char** data, int m, int n)
{
//对data进行修改,
}
void main()
{
char data[10][10];
func(data, 10, 10);
}
你这个地方就可以把ig_word作为参数传进去,在函数里面直接给ig_word赋值。