有关字符串和stdio.h库的未知错误

时间:2016-01-27 17:26:39

标签: c

我收到stdio.h库中发现的未知错误。 请有人检查一下,告诉我代码有什么问题(但我觉得它应该可以正常工作)。 附:我是新来的,所以如果这是一个糟糕的问题,请不要怪我。 代码:

   #include <stdio.h>
    #include <stdlib.h>

    // Conversion from a number to a string
    char *i2s(int broj);

    int main()
    {
        char string1;
        int br, n;
        do
        {
            printf("How much numbers?\n -"), scanf("%d", &n);
        } while (n < 1);
        for (int i = 0; i < n; i++)
        {
            printf("\nbr = "), scanf("%d", &br);
            string1 = *i2s(br);
            printf(" %s", string1);
        }
        free(string1);
        getch();
        return 0;
    }

    char *i2s(int broj)
    {
        char *pom;
        int z=0,br=0,p;
        if (broj < 0)
        {
            z = 1;
            broj = -broj;
        }
        p = broj;
        do
        {
            br++;
            p /= 10;
        } while (p);
        pom = (char *)calloc(br + 1 + z, sizeof(char));
        if (z)
            pom[0] = '-';
        do
        {
            pom[--br + z] = '0' + broj % 10;
        } while (broj /= 10);
        return pom;
}

1 个答案:

答案 0 :(得分:0)

char string1;
free(string1);

字符串1不是指针。

另外,在以下部分中,每次运行循环时都会覆盖string1。这样你就没有指向free()你在函数内部分配的内存的指针,除非你在循环中这样做。

for (int i = 0; i < n; i++)
    {
        printf("\nbr = "), scanf("%d", &br);
        string1 = *i2s(br);
        printf(" %s", string1);
    }