我试图得到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];
型
但是它仍然给出了同样的错误。你能纠正代码吗?我们如何向字符串数组中添加整数或字符?
1条答案
按热度按时间cfh9epnr1#
你基本上做错了所有能做错的事。
strcat
是错误的函数,你不想连接两个字符串,而是想逐个字符地构造一个字符串。char customerid(...
是没有意义的,它返回一个不是你想要的字符。printf("%s", id[100]);
打印元素100(顺便说一下,它不存在,因为你的数组只有100个元素,数组索引从0开始)。srand
是没有意义的。阅读这篇SO文章来获得解释:srand() — why call it only once?。顺便说一句,为了调试的目的,根本不调用srand
是有用的,那么你将总是得到相同的随机数序列。你可能想要这个:
字符串
我建议你阅读C课本中关于指针、字符串和数组的章节。