什么是“错误:无效使用void表达式”?

时间:2017-01-18 03:50:25

标签: c compiler-errors

我正在尝试创建一个十六进制到base64转换器。我不知道我是否正朝着正确的方向转换二进制文件,正如我现在尝试做的那样,或者是否有更直接的转换方式。有关转换数学或如何将十六进制编码到base64的任何建议都会非常有用。

相反,我一直收到错误(更新代码后的新错误):

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;
}

上次修改:我在代码中发现了错误。谢谢大家的反馈!

4 个答案:

答案 0 :(得分:1)

您尝试使用函数ReVerse()的返回值,但此函数返回void。它没有&#34;没有&#34;所以你不能分配什么&#34;某事。在这里,您尝试将数组RevHex放到&#34;没有&#34;。这没有用。

答案 1 :(得分:1)

如果您的函数只是反转输入的十六进制字符串,那么您可以这样做:

#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; }

这里我不认为这个字符RevHex [4096] = {0};很有用。因为要反转输入字符串。如果你像这样实现它,那么这个程序将起作用。 在谈论你的程序时,你将一个字符串值赋给一个void函数,这就是它给出错误的原因。

答案 2 :(得分:0)

我不知道如何“修复”这个但是尝试将RevHex分配给函数会引发错误。

鉴于ReVerse没有返回任何内容,我不确定RevHex的用途是什么......

答案 3 :(得分:0)

错误就在这一行:ReVerse(input) = RevHex; 你无法为调用void函数赋值,你应该将它作为参数传递给函数。