[英]How do you pass a 2d array of strings to a function in C language?
我不知道如何将radjectives
(字符串的2D数组)传递给randomizeadj
函数。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<ctype.h>
char randomizenouns(char[][]);
char randomizeadj(char[][]);
int main() // beginning of program.
{
int a=0, b=0;
char *answers[5]={'\0'};
char *rnouns[3][10]={'\0'};
char *radjectives[2][17]={'\0'};
char *rcolors[11]={'\0'};
radjectives[0][0]="intriguing";
// ...
radjectives[1][6]="loud";
rnouns[0][0]="puppies";
// ...
rnouns[1][9]="people";
rcolors[0]="black";
// ...
rcolors[10]="orange";
{ srand(time(NULL));
printf("\n\tProgram Paragrahs\n");
printf("\tFor this program you will answer several questions which will then be used to conjure a random story the length of a paragraph.Please Keep your answers clean.Enjoy\n");
printf("\nWhat is your name?");
scanf("%s\n",answers[0]);
printf("\nWhat is your favorite book?");
scanf("%s",answers[1]);
printf("\nWhat is your favorite color?");
scanf("%s",answers[2]);
printf("\nWhat city do you live in?");
scanf("%s",answers[3]);
printf("\nWhat car do you drive?");
scanf("%s",answers[4]);
我在这里迷路了 -我无法弄清楚如何将radjectives
数组传递给randomizeadj
函数。
printf("%s gets lost in their %s %s.\n",answers[0],randomizeadj(radjectives[a][b]),answers[1]);
printf("%s loves to play with %s %s.\n",answers[0],rcolors[(rand() %11)],randomizenouns(rnouns[a][b]);.
printf("%s lives in a(n) %s %s.\n",answers[0],randomizeadj(radjectives[a][b]),answers[3]);
printf("While living in %s %s drives a(n) %s %s.\n",answers[3],answers[0],rcolors[(rand() %11)],answers[4]);
printf("%s is a(n) %s person who likes the color %s.\n",answers[0],randomizeadj(radjectives[a][b]),answers[2]);
} // end of program
char randomizenouns(char nouns[x][y]);
{
int x=(rand() %3);
int y=(rand() %10);
char randomnoun= nouns[x][y];
return randomnoun;
}
char randomizeadj(char adjectives[x][y]);
{
int x=(rand() %2);
int y=(rand() %7);
char randomadjective= adjectives[x][y];
return randomadjective;
}
只是
randomizeadj(radjectives);
例如
char *adj = randomizeadj(radjectives);
printf(adj);
目前无法编译,将函数的声明和定义都更改为:
char *randomizenouns(char *nouns[3][10]);
char *randomizeadj(char *adjectives[2][17]);
要么:
char *randomizenouns(char *nouns[][10]);
char *randomizeadj(char *adjectives[][17]);
我改变的事情:
将char[][]
(一个2D字符数组)更改为2D数组或字符指针 (还要注意,数组的第一维必须始终具有指定的长度)。
将您的函数更改为返回char *
而不是char
(否则,您的函数仅返回一个字符,而不是字符串(但您仍然return adjectives[x][y]
)。
我更改的其他内容:
将answers
更改为不是char
指针的数组,而是2个char
的2D数组,否则编译器将不会为您尝试读取的值分配内存。
char answers[5][100];
还有一个;
此处不应该存在的地方:(对于两个功能)
char randomizeadj(char adjectives[x][y]);
{
...
测试程序 。
您可以按照声明的方式简单地传递它:
将您的函数定义和声明更改为以下内容:
char *randomizenouns(char *nouns[rows][cols])
char *randomizeadj(char *adjectives[rows][cols])
注意 :对于2D数组,您需要传递cols
大小,因此需要传递
编辑
并在代码中将分号(;)放入函数定义中
char randomizeadj(char adjectives[x][y]); { ... }
char randomizenouns(char nouns[x][y]); { .... }
从函数定义中删除分号
您可能会像以前那样遇到incompatible pointer type
错误,您可能没有使用匹配的函数定义签名来更改函数声明 签名 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.