0

次のような文字列がある場合、非常に基本的な質問があります。char charv1[6] = "v445"またはv666、数値を取得して値を持つ単一の整数に変換するにはどうすればよいです445666?

このコードを試してみましたが、何か問題が発生しました...:

            size = (strlen(charv1)-1);
            for(aux = size; aux > 0; aux--){
                if(aux == (size)){
                    v1 = charv1[aux]-'0';
                }
                else{

                    aux2 = (charv1[aux]-'0')*10;
                    printf("%d\n", aux2);
                    v1 = v1 + aux2;
                }
            }

charv1次の文字列が含まれます: v445etc

数年前に再帰的に実行したことを覚えていますが、方法は覚えていませんが、今ではエレガントなソリューションは必要ありません...うまく機能するソリューションが必要です。

4

5 に答える 5

2

sscanf はどうですか

sscanf( charv1, "%*c%d", &i); //skip the first char then read an integer

http://codepad.org/vOg22G8e

于 2013-10-17T21:58:57.900 に答える
1

それで

   int x = atoi(&charv1[1]);
   printf("Here it is as an integer %d\n", x);
于 2013-10-17T21:59:22.843 に答える
1

ループごとに 10 を乗算するのを忘れています。これは機能します:

        size = (strlen(charv1)-1);
        dec=10;
        for(aux = size; aux > 0; aux--){
            if(aux == (size)){
                v1 = charv1[aux]-'0';
            }
            else{

                aux2 = (charv1[aux]-'0')*dec;
                printf("%d\n", aux2);
                v1 = v1 + aux2;
                dec*=10;
            }
        }
于 2013-10-17T22:00:46.573 に答える