- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个自定义 itoa 函数,适用于 10 及更大的整数,但由于某种原因,如果传递的整数是单个数字,它不会返回任何内容。我似乎不明白为什么会这样。
当我通过简单地访问 array[0]
来反转数组后打印数组时和array[1]
,我看到 null 和单个数字打印得很好,但在单个数字后面有一些奇怪的尾随字符。这只发生在个位数上。例如(blank)7e
或(blank)4r
功能:
char* customitoa(int number, char * array, int base){
array[0] = '\0';
int quotient = number, i = 1;
/* stores integers as chars into array backwards */
while(quotient != 0){
int temp, length = 1;
temp = quotient % base;
length++;
array = realloc(array, (length)*sizeof(char));
if (temp <= 9){
array[i++] = (char)(((int)'0')+temp);
} else {
array[i++] = (char)(temp + ('A' - 10));
}
quotient = quotient / base;
}
/* reverse array*/
int j; int k;
k = 0;
j = i - 1;
char temp;
/* - different swap functions based on odd or even sized integers */
if( (j%2) == 1){
while((k <= ((j/2)+1))){
temp = array[k];
array[k] = array[j];
array[j] = temp;
k = k+1;
j = j - 1;
}
} else {
while(k <= (((j)/2))){
temp = array[k];
array[k] = array[j];
array[j] = temp;
k = k+1;
j = j - 1;
}
}
return array;
}
在此上下文中调用该函数:
char *array;
array = malloc(length*sizeof(char));
array = myitoa(number, array, base);
printf("%s", array);
free(array);
最佳答案
while(quotient != 0){
int temp, length = 1;
在此循环中长度始终为 1。
更改为
int length = 1;
while(quotient != 0){
int temp;
最后执行一次realloc
array = realloc(array, (length)*sizeof(char));
移出while循环
}//while end
array = realloc(array, (length)*sizeof(char));
下列条件不正确
while((k <= ((j/2)+1))){
....
while(k <= (((j)/2))){
更改为
int L = j/2;
...
while(k <= L){
...
while(k <= L-1){
总结一下
if( j%2 == 1)
L=j/2;
else
L=j/2-1;
while(k <= L){
temp = array[k];
array[k] = array[j];
array[j] = temp;
k = k+1;
j = j - 1;
}
关于c - itoa 函数不适用于单位数整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16258416/
这听起来像是一个愚蠢的问题......但我在任何地方都找不到 strconv.Itoa 中的“a”实际上代表什么。如果它取一个整数并把它变成一个字符串,为什么这个函数不叫 Itos? 最佳答案 整数到
赏金:对于提供代码以使此子程序与负数一起工作的任何人,+50 信誉点。 我编写了一个 MIPS 程序来将华氏温度转换为摄氏温度。它打开自己的输出窗口(即 UART)并正确显示摄氏值。它在从 C 调用到
也许不是一个真正重要的问题,但只是从 c 开始。为什么这不能正确编译? #include #include void main() { int i = 15; char word[100]; it
我正在尝试在汇编(网络汇编器)中实现atoi。我通过使用调试器检查寄存器值来验证我的方法是有效的。问题是应用程序在即将退出时会崩溃。我担心我的程序正在以某种方式破坏堆栈。我链接到 GCC stdlib
我希望我的函数“ordenafile”采用candidatos.000 - candidatos.068。由于某种原因,我认为 si[0] 有问题,因为如果我让程序打印 si[0],它就会崩溃。有人知
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
为什么这会给我一个内存错误? char* aVar= new char; itoa(2, aVar, 10); delete aVar; itoa 是否删除了 aVar?如何知道 C++ 函数是否删除
代码先行: template void do_sth(int count) { char str_count[10]; //... itoa(count, str_count
好的,所以我试图让我的 itoa_base.c 返回一个字符串,并在另一个函数中创建一个字符串 *str 并将指向该字符串的引用指针发送到我执行转换的函数,但是当我尝试打印时它检查它,我只得到字符串的
我一直在尝试编写一个递归版本的函数itoa,代码如下所示。 void itoa(int n, char s[]) { static int i = 0; if(n / 10 !=
我正在将一些旧的 c 程序转换为更安全的版本。以下功能被大量使用,谁能告诉我他们的安全对应物? Windows 函数或 C 运行时库函数。谢谢。 itoa() getchar() strcat() m
我目前正在调用 _itoa_s,然后调用 strlen 来计算写入了多少个字符。是否有与 itoa 类似的方法,要么返回指向缓冲区开头的新指针,要么返回写入了多少个字符?我无法在标准库中找到提供此功能
我目前正在调用 _itoa_s,然后调用 strlen 来计算写入了多少个字符。是否有与 itoa 类似的方法,要么返回指向缓冲区开头的新指针,要么返回写入了多少个字符?我无法在标准库中找到提供此功能
如果我包含 stdlib.h,那么 itoa() 也不会被识别。我的代码: %{ #include "stdlib.h" #include #include int yylex(void); ch
我试图重写 K&R 练习中的 itoa() 函数,但未能定义它。我在库中看到函数的答案,但我无法理解 do block 中的内容。请向我解释一下。谢谢! /* itoa: convert n to
我的程序仅输出非零数字...例如输入= 16076,输出= 1676 ...任何人都可以帮忙数学 #include char *ft_itoa(int n) { int cou
我被分配了实现 itoa 的任务,但我的代码不适用于 -2147483648。我怎样才能让它发挥作用? char *itoa(int nbr) { static char rep[] =
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 3 年前。 Improv
我想知道是否有一种方法可以使用字符串化编译器指令来字符串化整数变量。我尝试使用: #define stringize(a) #a #define h(a) stringize(a) #define g
背景 我正在尝试确定一些国家变音字母的字符代码。 问题 我的代码有问题吗? char a = "a"; // "a" ascii code is 97 char buffer[8]; itoa(buf
我是一名优秀的程序员,十分优秀!