无法转换' main'到'无效'函数与字符串

时间:2016-03-19 12:10:44

标签: c string main void

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

typedef char String[80];

int main() {
    String originalStr = "mail";
    String reversedStr; 
    int index;
    int len = strlen(originalStr);

    for (index = 0; index < len; index++) { 
        reversedStr[index] = originalStr[len - index -1];
    }
    reversedStr[index] = '\0'; 

    printf("Original is %s, reversed is %s\n", originalStr, reversedStr);
}

我想知道如何修改main函数以在原型中使用void函数:void reverseString(String originalStr, String reversedStr);

事实上,我无法理解voidmain之间的区别。

1 个答案:

答案 0 :(得分:2)

在深入学习C语言之前,您必须学会正确缩进代码。它将使您的代码可读并防止许多愚蠢的错误。

我重新格式化了您发布的代码,看看它是如何完成的。

关于你的问题,你应该将用于将字符串反转的代码移动到一个单独的函数中,为其提供原型:

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

typedef char String[80];

void reverseString(String originalStr, String reversedStr) {
    int index;
    int len = strlen(originalStr);

    for (index = 0; index < len; index++) { 
        reversedStr[index] = originalStr[len - index - 1];
    }
    reversedStr[index] = '\0'; 
}         

int main(void) {
    String originalStr = "mail";
    String reversedStr; 
    reverseString(originalStr, reversedStr);
    printf("Original is %s, reversed is %s\n", originalStr, reversedStr);
}

函数是编程语言中的基本块,用于将功能分解为更小的可重用步骤。请注意,函数中的originalStrreverseStr是函数参数的名称。它们是函数的本地。从main传递的值恰好通过构造具有相同的名称,但这不是必需的。从一本好的教程书中了解更多信息。