0

私は Microsoft Visual Studio を使用して C を学習しています。いくつかのコードを書きましたが、うまく機能しています。しかし、xcode でデバッグしようとすると、うまくいきません。

これは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]);
        }

}
4

3 に答える 3

1

前述のようにitoa、C99 標準の一部ではありません。代わりに、以下を使用してくださいsprintf(またはsnprintfバッファ オーバーフローを回避するため):

sprintf(target_string, "%d", int_value);
于 2012-12-16T00:37:41.600 に答える
1

あなたが使用することができます:

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

バッファ オーバーフローを回避するため (変換している数値が文字列のサイズに合わない場合)。

于 2012-12-16T00:39:58.670 に答える
1

itoa も strrev も標準ではありません。

その他の StackOverflow に関する質問:

Linux の itoa 関数はどこにありますか?

strrev() 関数は Linux では使用できませんか?

これら 2 つの問題を修正すると、中間の問題が修正される可能性がありますが、そうでない場合はhttp://forums.bignerdranch.com/viewtopic.php?f=77&t=1743を参照してください。

于 2012-12-16T00:40:38.400 に答える