gpt4 book ai didi

C 使用 fgets 从 1 读取字符串并保留 0 以供读取

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:15 24 4
gpt4 key购买 nike

我正在用 C 编写一个函数,它从用户那里获取一个数字并将其转换为一个字符串,在字符串的开头放入 - + 或什么都不写(如果为 0),而不是打印字符串的长度和字符串本身。

假设我输入“123”,字符串将包含:'+','1','2','3','\0'它将打印:“数组长度为 4,它包含 +123”使用 minus 它将打印相同的内容,只是在开头使用 - (-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 时的输出:

The string length is 3 and contains the number: 123

最佳答案

您复制在 sNum 中设置的字符。您需要从 sNumsecond 字符开始复制,即 &sNum[1]。还要记住从 string 中少复制一个字符。还要记住有一种情况 strncpy不会附加终止符。

或者只使用 snprintf :

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

关于C 使用 fgets 从 1 读取字符串并保留 0 以供读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34901533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com