我只想做的就是制作一张以C或D随机开头的记录,并附上一个数字1-10。所以记录是C10。谁能告诉我这里我做错了什么?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/wait.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
/*
*
*/
int main(int argc, char** argv)
{
char letter[] = { 'C', 'D' };
char record[2];
int r=1;
while (r < 11)
{
char num;
num = r;
record = (letter[rand()%2],num);
r++;
}
return 0;
}
答案 0 :(得分:3)
对于一个明显的观点,“C10”需要4个字符,假设你想要它作为普通的C字符串(字符串中的3个+ 1个NUL终结符),但你只为2个空间腾出空间。
至少假设您希望将1-10作为文本字符,您通常希望执行以下操作:
sprintf(record, "%c%d", letter[rand()%2], num);
并不是很重要,但你似乎要为你正在做的事情包括一个很多的不必要的标题。
答案 1 :(得分:2)
record = (letter[rand()%2],num);
这不是合法的诉讼......试试这个:
record[0] = letter[rand()%2];
record[1] = num;
答案 2 :(得分:2)
您希望弹出字符'0' - '9',但是您要为字符r指定0到10之间的数值。请查看table of ASCII characters。
我会这样试试:
char record[4];
for (unsigned r = 0; r <= 10; ++r) {
snprintf(record, sizeof(record), "%c%d", letter[rand() % 2], r);
}