C从1读取带有FGET的字符串,并保持0可用于读取
我正在用C编写一个函数,它从用户那里获取一个数字并将其转换成字符串,在字符串的开头加上-+或者如果0,则不加任何内容,只打印字符串的长度和字符串本身 假设我输入123,字符串将包含:“+”、“1”、“2”、“3”、“\0” 它将打印:数组长度为4,包含+123 使用减号时,它将打印相同的内容,开始时使用-123,使用0时,它不会打印任何内容0 这就是我写的代码:C从1读取带有FGET的字符串,并保持0可用于读取,c,string,C,String,我正在用C编写一个函数,它从用户那里获取一个数字并将其转换成字符串,在字符串的开头加上-+或者如果0,则不加任何内容,只打印字符串的长度和字符串本身 假设我输入123,字符串将包含:“+”、“1”、“2”、“3”、“\0” 它将打印:数组长度为4,包含+123 使用减号时,它将打印相同的内容,开始时使用-123,使用0时,它不会打印任何内容0 这就是我写的代码: #define STRING_SIZE 100 int main () { int num; char sNum[S
#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[1]='\0'
大概是这样的:
char sNum[STRING_SIZE + 1] = {'\0'}, string[STRING_SIZE] = {'\0'};
// ...
if (num != 0) {
sNum[0] = (num < 0) ? '-' : '+';
}
strcat(sNum, string);
这将用符号覆盖原始值
请改用,但请确保sNum[1]='\0'
大概是这样的:
char sNum[STRING_SIZE + 1] = {'\0'}, string[STRING_SIZE] = {'\0'};
// ...
if (num != 0) {
sNum[0] = (num < 0) ? '-' : '+';
}
strcat(sNum, string);
您不需要将其转换为字符串。请检查此项
#include <stdio.h>
int main(void)
{
int value;
int length;
if (scanf("%d%n", &value, &length) != 1)
return -1;
if (value == 0)
printf("The string length is `1' and contains the number `0'\n");
else
printf("The string length is `%d' and contains the number `%+d'\n",
length, value);
return 0;
}
说明:
scanf中的%n说明符以长度存储scanf读取的字符数。
printf+修饰符在正数前面加一个+,在负数前面加一个-。特殊值0单独处理。
始终检查scanf的返回值。
您不需要将其转换为字符串。请检查此项
#include <stdio.h>
int main(void)
{
int value;
int length;
if (scanf("%d%n", &value, &length) != 1)
return -1;
if (value == 0)
printf("The string length is `1' and contains the number `0'\n");
else
printf("The string length is `%d' and contains the number `%+d'\n",
length, value);
return 0;
}
说明:
scanf中的%n说明符以长度存储scanf读取的字符数。
printf+修饰符在正数前面加一个+,在负数前面加一个-。特殊值0单独处理。
始终检查scanf的返回值。
复制在sNum中设置的角色。您需要从sNum的第二个字符开始复制,即&sNum[1]。还要记住从字符串中少复制一个字符。还请记住,在某些情况下,将不会附加终止符 或者直接使用:
复制在sNum中设置的角色。您需要从sNum的第二个字符开始复制,即&sNum[1]。还要记住从字符串中少复制一个字符。还请记住,在某些情况下,将不会附加终止符 或者直接使用: OP使用char sNum[STRING_SIZE]={'\0'}将sNum初始化为全零,因此sNum[1]=0;行不是必需的。OP使用char sNum[STRING_SIZE]={'\0'}将sNum初始化为全零,因此sNum[1]=0;不需要排队。