我在学校学的是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;
}