我想随机化我的字符串,这是我的代码。
while(strcmp(word,"END")!=0)
{
printf("Enter word");
fgets(input,sizeof(input),stdin);
sscanf(input,"VERTEX %s",key1);
strcpy(list[count],key1);
count++;
}
random(list);
我将list和key1声明为char list[32],key1[32];
然后我试着把它传递给这个函数
void random(char* list)
{
int i = rand()%5;
char key1[32];
printf("%d",i);
printf("%s",list[i]);
strcpy(key1,list[i]);
}
但它给了我这个警告
incompatible integer to pointer conversion passing 'char'
to parameter of type 'char *'
它无法打印。有什么建议吗?
答案 0 :(得分:1)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void random(char list[][32], char *key, int size){
int i = rand()%size;
printf("choice %d\n",i);
printf("choice key is %s\n", list[i]);
strcpy(key, list[i]);
}
int main(void){
char list[5][32], key1[32], word[32];
int count = 0;
srand(time(NULL));
while(1){
printf("Enter word : ");
fgets(word, sizeof(word), stdin);
if(strcmp(word, "END\n")==0)
break;
if(count < 5 && 1==sscanf(word, "VERTEX %s", key1)){
strcpy(list[count++],key1);
}
}
if(count){//guard for count == 0
random(list, key1, count);
printf("choice key : %s\n", key1);
}
return 0;
}
答案 1 :(得分:0)
如果您已定义char list[32];
,已调用random(list);
并使用void random(char* list)
,则
strcpy(list[count],key1);
printf("%s",list[i]);
strcpy(key1,list[i]);
所有陈述都是错误的。
strcpy()
预计其参数分别为char *
和const char *
。%s
format specifier printf()
期望char *
,而不是char
。
在您的代码中,list[count]
和list[i]
的类型为char
,而不是const char *
或char *
。
答案 2 :(得分:0)
void random(char *list);
所以这里list
是char
类型的指针,当你将一个有效的char数组传递给这个API时,列表指向你的数组list
。
现在你需要的只是
printf("%s",list); /* Format specifier %s needs char * */
strcpy(key1,list); /* The arguments should be char * */