我正在用C编写一个函数,它从用户那里获取一个数字并将其转换成一个字符串,在字符串的开头加上-+或者什么都不加(如果是0),只打印字符串的长度和字符串本身。
所以假设我输入“123”,字符串将包含“+”、“1”、“2”、“3”、“0”
它会打印:“数组长度是4,它包含+123”
用减号,它会在开头用-123打印相同的东西,用0,它不会打印任何东西(0)
这就是我制定的准则:

#define STRING_SIZE 100

int main ()
{
    int num;
    char sNum[STRING_SIZE] = {'\0'}, string[STRING_SIZE] = {'\0'};
    printf("%s", string);
    scanf("%d", &num);
    itoa(num, string, 10);

    if (num < 0) {
        sNum[0] = '-';
    }
    else if (num > 0) {
        sNum[0] = '+';
    }
    strncpy (sNum, string, STRING_SIZE);
    printf("\nThe string length is %d and contains the number: %s\n", strlen(sNum), sNum);

    system ("PAUSE");
    return 0;
}

这是我输入123时的输出:
字符串长度为3,包含数字:123

最佳答案

复制在sNum中设置的字符您需要从sNum的第二个字符开始复制,即&sNum[1]。还记得从string中少复制一个字符还要记住,在某些情况下,strncpy不会附加终止符。
或者使用snprintf

snprintf(sNum, sizeof(sNum), "%+d", num);

09-11 19:51