2016-01-27 32 views
0

我收到stdio.h庫中發現的未知錯誤。 請有人檢查它告訴我什麼是錯誤的代碼(但我的事情應該工作正常)。 P.S.我是新來的,所以如果這是個不好的問題,請不要責怪我。 代碼:有關字符串和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; 
} 
+0

'= * i2s(br);'... hmmmmm –

+0

您可以從編譯代碼開始。並詢問是否有任何警告或錯誤信息,您不明白。以下是您的代碼的當前錯誤:http://ideone.com/l2YkrA。你不明白什麼錯誤信息? – mikedu95

+0

我得到這些錯誤http://clip2net.com/s/3tvMfMN 對不起,但我不明白他們@ mikedu95 –

回答

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); 
    } 
相關問題