strncpy会覆盖现有的字符串

时间:2011-09-10 00:10:59

标签: c strncpy

我创建了一个将数字转换为罗马数字的函数。我知道转换本身的逻辑是正确的,但是,每次调用strncpy时,它都会覆盖之前的“rom”值。我甚至试着背靠背调用它只返回后者。

以下是代码中的代码段:

   char* rom = (char*) calloc (10,sizeof(char));

    while(intval>=1000){
        intval -= 1000;
    strncpy(rom,"M",2);
    }

也许使用calloc是问题的一部分,但我尝试使用malloc,它给了我相同的结果。

2 个答案:

答案 0 :(得分:11)

你想追加,但strcpy只是复制到地址(并覆盖)。使用strcatstrncat

答案 1 :(得分:3)

我相信您需要strcat()而不是strcpy()