如何将char传递给函数?

时间:2015-04-06 10:01:12

标签: c string

我想随机化我的字符串,这是我的代码。

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 *'

它无法打印。有什么建议吗?

3 个答案:

答案 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]);

所有陈述都是错误的。

在您的代码中,list[count]list[i]的类型为char,而不是const char *char *

答案 2 :(得分:0)

void random(char *list);

所以这里listchar类型的指针,当你将一个有效的char数组传递给这个API时,列表指向你的数组list

现在你需要的只是

   printf("%s",list); /* Format specifier %s needs char * */
   strcpy(key1,list); /* The arguments should be char * */