将数字转换为字符串

时间:2016-05-11 12:25:27

标签: c

所以我写了一个简单的c代码,它将一个数字转换成一个字符串,有一件事我不清楚。在这段代码上:

    void itos(int a,char *p){
    int pom = a;
    do{
       p++;
       pom/=10;
    }while(pom);
    *p = '\0';
    do{
       pom = a%10 + '0';
       *--p = pom;
       a/=10;
      }while(a);
     }

我一直在分段错误,我不明白为什么。字符串是通过地址传递的,所以主要的字符串是否应该在函数中具有字符串?另一方面,这段代码很有效:

     char *itos(int a,char *p){
     int pom = a;   
     do{
        p++;
        pom/=10;
     }while(pom);
    *p = '\0';
    do{
        pom = a%10 + '0';
        *--p = pom;
        a/=10;
    }while(a);
    return p;

   }

如果somone可以解释我的差异(特别是为什么第一个不起作用)我会非常精彩。

1 个答案:

答案 0 :(得分:0)

这两个函数只有返回值不同,一个返回指针p,另一个不返回任何内容。因此,请确保传入的指针初始化为有效地址,即指向缓冲区:

char str[100];
itos(a, str);

char *str = malloc(100);
itos(a, str);

要将整数转换为字符串,您只需打印它:

char str[100];
int n;
snprintf(str, sizeof str, "%d", n);