2017-01-18 151 views
0

16進数から16進数のコンバーターを作成しようとしています。私が今やっているようにバイナリを変換する正しい方向に行くのか、より直接的な変換方法があるのか​​分かりません。変換の数学や、16進数から16進数へのコード化に関する提案は非常に役に立ちます。逆に「エラー:void式の無効な使用」とは何ですか?

、私はエラー(更新されたコードから新しいもの)を受信されています:

hexto64.c: In function ‘main’: 
hexto64.c:21:17: error: lvalue required as left operand of assignment 
ReVerse(input) = RevHex; 
      ^

誰もがこのエラーは意味し、どのように を解決に大いに役立つだろうか説明するのに役立つことができれば!前もって感謝します。

編集:コメントの数人のおかげで、エラーを理解できるようになりました。

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

char ReVerse(const char *str) 
{ 
    if (*str != '\0') 
      ReVerse((str + 1)); 
    printf("%c", *str); 
} 



int main() 
{ 
    char RevHex; 
    char input[4096] = {0}; 

    printf("Enter Hexadecimal: "); 
    scanf("%s", input); 
    RevHex = ReVerse(input); 
    printf("\n"); 
    return 0; 
} 

最終編集:

は、ここで(更新)私のコードで私は自分のコード内のエラーを発見しました。すべてのフィードバックのためにみんなありがとう!

+5

関数呼び出しの結果に代入することはできません。関数が何も返さない場合( 'void')は二重に代入することはできません。関数がポインタを返す場合は、ポインタを使用して書き込むこともできますが、やっていることはあまり意味がありません。割り当てのLHSとRHSを単に逆にするだけでは役に立ちません。 'RevHex'は変更可能な値ではありません。あなたは何をやっているのか考え直す必要があります。たぶんReVerse(入力)?あるいは、あなたはその機能でもやるべきことがあります。 –

+0

(void)関数に(char配列)の値を代入しようとしているようです。 – zx485

+0

'string'とは何ですか? – AnT

答えて

1

何のためにあるのかわかりません。それは何もないので、あなたは何にも「何も」割り当てることができません。ここでは、配列RevHexを "nothing"にしようとします。これは意味をなさない。

0

これを「修正」する方法はわかりませんが、RevHexを関数に割り当てるとエラーが発生します。 REVERSEは何も返さないことを考えると

は、私はあなたが機能ReVerse()が、この関数の戻りvoidの戻り値を使用しようとRevHexが...

1

あなたの機能だけで入力された16進数の文字列を逆にしている場合、あなたはこのようにそれを行うことができます。ここでは

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

void ReVerse(const char *str) { 
    if (*str != '\0') 
      ReVerse((str + 1)); 
    printf("%c", *str); } 

    int main() { 
    char input[10] = {0}; 

    printf("Enter Hexadecimal: "); 
    scanf("%s", input); 
    ReVerse(input); 
    printf("\n"); 
    return 0; } 

が、私は考えていない、このchar型のRevHex [4096] = {0};有用である。入力文字列を逆にしたいからです。このように実装すると、このプログラムが動作します。 あなたのプログラムについて言えば、文字列の値をvoid関数に代入しているので、エラーが発生しています。

+0

RevHexに後で使うためにReverse(入力)の値を保持させる方法はありますか? – TestKali

0

このエラーは次の行です。ReVerse(input) = RevHex; void関数の呼び出しに何かを割り当てることはできません。それをパラメータとして関数に渡す必要があります。

関連する問題