传递“strcat”的参数1,使指针从整数变为不带强制转换的指针[-Wint-conversion]

cyvaqqii  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(80)

我试图得到10个随机数,并将它们收集在一个字符数组中,以获得一个随机的客户ID,但它给出了这个警告。我无法修复它,无论我做什么。你能帮助吗?

char customerid(){
    char id[100];
    char b[50];
    srand(time(0));
    for(int i=0; i<10; i++){
        int n = rand() % 10;
        char c = n + 48;
        strcat(id, c); //here is the problem
        
    }
    printf("%s", id[100]);



    return id[100];
}

字符串
这是我的第二次审判:

char customerid(){
char id[100];
for(int i=0; i<10; i++){
    int n = rand() % 10;
    char* c = (char*)n + '0';
    strcat(id, c);
    
}
printf("%s", id[100]);



return id[100];


但是它仍然给出了同样的错误。你能纠正代码吗?我们如何向字符串数组中添加整数或字符?

cfh9epnr

cfh9epnr1#

你基本上做错了所有能做错的事。

  • 你不能在C中返回数组。你需要将指向数组的指针传递给函数,并从函数内部填充该数组
  • strcat是错误的函数,你不想连接两个字符串,而是想逐个字符地构造一个字符串。
  • char customerid(...是没有意义的,它返回一个不是你想要的字符。
  • printf("%s", id[100]);打印元素100(顺便说一下,它不存在,因为你的数组只有100个元素,数组索引从0开始)。
  • 每次都调用srand是没有意义的。阅读这篇SO文章来获得解释:srand() — why call it only once?。顺便说一句,为了调试的目的,根本不调用srand是有用的,那么你将总是得到相同的随机数序列。

你可能想要这个:

void customerid(char *id) {
  int i;
  for (i = 0; i < 10; i++) {
    id[i] = rand() % 10 + '0';
  }
  id[i] = 0;   // put the null string terminator
}

int main()
{
  srand(time(0));

  for (int i = 0; i < 10; i++)  // generate 10 different ids
  {
    char id[100];        // id will contain the random customer id
    customerid(id);      // call customerid and tell it to fill the id array
    printf("%s\n", id);  // print the customer id
  }
}

字符串
我建议你阅读C课本中关于指针、字符串和数组的章节。

相关问题