strncpy перезаписывает существующую строку символов - PullRequest
3 голосов
/ 10 сентября 2011

Я создал функцию для преобразования числа в римскую цифру. Я знаю, что логика самого преобразования верна, однако каждый раз, когда вызывается strncpy, он перезаписывает предыдущее значение «rom». Я даже попытался перезвонить, и он только вернул последнее.

Вот фрагмент кода:

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

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

Возможно, использование calloc является частью проблемы, но я попытался использовать malloc, и он дал мне тот же результат.

Ответы [ 2 ]

11 голосов
/ 10 сентября 2011

вы хотите добавить, но strcpy просто копирует на адрес (и перезаписывает).используйте strcat или strncat

3 голосов
/ 10 сентября 2011

Я верю, что вы хотите strcat(), а не strcpy()

...