我正在用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);