C字符串问题

时间:2011-07-11 19:29:34

标签: c

我只想做的就是制作一张以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;
}

3 个答案:

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