C语言 如何从整数数组中减去1



我在学校学的是C,我的项目有一点困难。基本上,我在写一个函数,它得到一个包含正整数的字符串。该函数从该整数中减去1,并将得到的值放入字符串中。

那么,如果我有这个;

char nums[] = "2462";

我如何写一个函数,将从整数中减去1,使结果是"2461"?

首先,将字符数组转换为整数。

您可以使用atoi(ASCII到整数),但由于它在错误时返回0,因此无法区分成功转换"0"和错误。

strtol(STRing TO Long integer)代替

// end stores where parsing stopped.
char *end;
// Convert nums as a base 10 integer.
// Store where the parsing stopped in end.
long as_long = strtol(nums, &end, 10);
// If parsing failed, end will point to the start of the string.
if (nums == end) {
perror("Parsing nums failed");
}

现在可以进行减法,用sprintf将整数转换回字符串,并将其放入nums中。

sprintf(nums, "%ld", as_long - 1);

这不是完全安全的。考虑nums是否为"0"。它只有1字节的空间。如果我们减去1,那么我们有"-1",我们存储了2个字符,而我们只有1个字符的内存。

有关如何安全地完成此操作的完整说明,请参见如何在C中将int转换为string ?

或者,不存储它,只打印它。

printf("%ld", as_long - 1);

一种方法是将string ->int→字符串。

你可以使用atoi和sprintf。

简单实现(远非完美):

#include <stdlib.h>
#include <stdio.h>
int main() 
{
int a;
char b[5];
a = atoi("2462");
a--;
sprintf(b, "%d", a);
printf("%sn", b);
return 1;
}

相关内容

  • 没有找到相关文章

最新更新