【发布时间】:2026-02-08 10:45:01
【问题描述】:
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 来说还是很陌生
谢谢
【问题讨论】:
-
忘记
j...printArray(arr1[0]);==> ideone.com/Nvs3xL -
@pmg:您发布的链接背后的代码不是 OP 想要的。 OP 想要打印多维数组中的所有 9 个单词。相反,您的代码会打印数组前 3 个单词的前 3 个字符。
标签: c