无法使用字符串将 'main' 转换为 'void' 函数

标签 c string program-entry-point 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函数原型(prototype):void reverseString(String originalStr, String reversedStr);

事实上,我无法理解 void 之间的区别和main .

最佳答案

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

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

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

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

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

关于无法使用字符串将 'main' 转换为 'void' 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36101552/

相关文章:

c++ - eclipse同步的C/C++项目同步失败

java - 返回字符串时,它会向字符串添加额外的斜杠

c++ - 如何在 C 中使用 header 中的 C++ 函数?

java - 在 android 中使用 NewGlobalReference 的 JNI 引用无效

c - 为什么 size_t 类型的变量在 printf 调用中转换为 (unsigned)?

java - String + String 与从方法返回的 String + String

string - 在表中插入字符串的引号和未引号部分

c++ - 将 C++ 代码编译为返回 double 的 .EXE

c - C 中 main(void) 和 main() 的区别

c - 执行系统调用时出现问题,系统调用未向内核显示