C 新手,传递指针有困难。 我正在尝试传递这个指向字符串 (char[]s) 的二维指针数组。我一直收到无法使用 %s 的错误,因为在函数调用中我将参数声明为 char。但是,如果我使用 %c,我只会打印“H”、“e”、“l”的前三个字符,然后出现段错误。
Error Code:
format specifies type 'char *' but the argument has type 'char' [-Wformat]
printf("%s ", in[i][j]);
~~ ^~~~~~~~
%c
建议?
void printArray(char *in[]){
int i;
int j;
for (i = 0; i < 3; i++){
for (j = 0; j < 3; j++){
printf("%c ", in[i][j]);
}
}
main(){
char *arr1[3][3];
arr1[0][0] ="Hello";
arr1[0][1] = "World";
arr1[0][2] = "Today";
arr1[1][0] = "Is";
arr1[1][1] = "September";
arr1[1][2] = "28";
arr1[2][0] = "th";
arr1[2][1] = "2021";
arr1[2][2] = "yay";
char *j = arr1[0][0];
int k;
int p;
printf("Before: \n");
printArray(&j);
重申一下,目标是发送字符串数组,然后在“printArray”函数中打印它们
抱歉,如果这是一个简单的问题,又是 C 语言的新问题
谢谢
最佳答案
改变
printArray(char *in[])
到
printArray(const char * in[][3])
和
printArray(&j)
到
打印数组(arr1)
然后,您应该可以使用 %s
。
您正在传递一维数组并希望在打印中将其用作二维数组。
https://stackoverflow.com/questions/69364214/