2012-12-16 84 views
1

我正在使用Microsoft Visual Studio学习C,我写了一些代码,它工作的很好。但是当我尝试用xcode进行调试时,它不起作用。我在xcode中遇到了一些问题

this is my error in xcode

这里是我的代码转换的数以罗马数字:

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

int main() 
{ 
    int dec,length,indice,irom,itab=0; 
    char rom[4][5]={'\0'}; 
    char dconvert[10]; 
    char convert[2]; 
    char tab[7]={'I','V','X','L','C','D','M'}; 
    float dec2; 

    puts("give a number"); 
    scanf("%d",&dec); 

    itoa(dec,dconvert,10); 
    length=strlen(dconvert); 
    strrev(dconvert); 

    for (indice=0; indice < length;indice ++) 
    { 
     convert[0]=dconvert[indice]; 
     dec=atoi(convert); 
     if (dec<=3) 
     { 
      for (irom=0; irom<dec;irom++) 
       { 
        rom[indice][irom]=tab[itab]; 
       } 
     } 
     if (dec>3 && dec<9) 
     { 
      irom=0; 
      dec2=dec-5; 
      if (dec2<0) 
      { 
       rom[indice][irom]=tab[itab]; 
       rom[indice][irom+1]=tab[itab+1]; 
      } 
      else 
      { 
       rom[indice][irom]=tab[itab+1]; 
       for (irom=1;irom<=dec2;irom++) 
       { 
        rom[indice][irom]=tab[itab]; 
       } 
      } 
     } 
     if (dec==9) 
     { 
      irom=0; 
      rom[indice][irom]=tab[itab]; 
      rom[indice][irom+1]=tab[itab+2]; 
     } 


     itab=itab+2; 
    } 
    for (indice=length; indice>=0;indice--) 
     { 
      printf("%s",rom[indice]); 
     } 

} 
+1

'itoa()'是不是一部分的C标准,它告诉你这一点。谷歌搜索将删除更多的细节,以及这个SO问题:http://stackoverflow.com/questions/2225868/how-to-convert-an-integer-to-a-string-portably?rq=1 –

回答

1

如前所述,itoa不是C99标准的一部分。相反,使用sprintf(或snprintf避免缓冲区溢出):

sprintf(target_string, "%d", int_value); 
+0

谢谢你你的答案。 – user1907096

1

你可以使用:

snprintf(str, sizeof(str), "%d", num); 

避免缓冲区溢出(当你将数量不适合的大小您串)。

相关问题