2016-01-27 1 views
0

Я получаю ошибку uknown, найденную в библиотеке 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 (бр);' ... 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); 
    } 
Смежные вопросы