我需要帮助
我想在函数中返回一个字符串并在另一个字符串中使用?
char *randString() {
int n = (0 + rand() % ( 4 - 0 ));
char cadena[5][100] ={
{"Duck"},
{"Taxi"},
{"Hola Mundo!"},
{"Paris"},
{"Lexugon"}
};
return cadena[n] ;
}
我希望得到主要功能并发送给用户的另一个功能......
int main (){
srand(time(NULL));
int contador = 0;
/*while ( contador < 100 ){
char* ptr = randString();
printf ( "%s\n", ptr );
contador++;
}*/
char *ptr=randString();
compare( ptr );
getchar();
return 0;
}
答案 0 :(得分:1)
您无法返回来自自动存储中的本地数组的字符串,但如果您声明了数组static
和/或将其声明移动到外部范围,则可以执行此操作:
static char cadena[5][100] ={
{"Duck"},
{"Taxi"},
{"Hola Mundo!"},
{"Paris"},
{"Lexugon"}
};
char *randString() {
return cadena[rand() % 5] ;
}
当超出范围时,不允许在自动存储区域中引用变量;这将是未定义的行为。静态存储中的对象仍然有效。
在外部作用域中声明cadena
静态可确保名称从其他翻译单元保持“不可见”,从而确保不同C文件中的另一个cadena
的声明不会创建名称冲突
答案 1 :(得分:0)
编辑: 为了使用main中的其他函数,您必须将char []从main传递到randString函数并更改它,然后返回void,因为字符串已被更改。
最终解决方案
主要:
int sizeOfCadena = ;//number of Strings to generate.
char cadena[5][100] = {
{"Duck"},
{"Taxi"},
{"Hola Mundo!"},
{"Paris"},
{"Lexugon"}
};
DELETE RandString并替换为:*
char *result = cadena[(rand() % 5)];
答案 2 :(得分:0)
而不是
char cadena[5][100] ={ ...
使用static
函数变量。
static char cadena[5][100] ={ ...
还使用:
int n = (0 + rand() % ( 4 - 0 ));
永远不会返回数组的第5个元素。如果要包含它,请使用
int n = (rand() % 5);