无法使用字符串将“main”转换为“void”函数[关闭]
Posted
技术标签:
【中文标题】无法使用字符串将“main”转换为“void”函数[关闭]【英文标题】:Cannot convert 'main' to 'void' function with string [closed] 【发布时间】:2016-07-06 05:18:43 【问题描述】:#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);
事实上,我无法理解void
和main
之间的区别。
【问题讨论】:
您需要查看The Definitive C Book Guide and List 并找到一本不错的初学者书籍或教程。它将告诉您如何创建函数(您实际上知道,main
只是一个普通函数)。然后继续how to ask good questions。最后更新您的问题以更具体地解决您的问题,您遇到的问题到底是什么?如何创建函数? (读一本书。)了解void
在不同地方的含义? (也读一本书。)
另外,你应该删除 C++ 标签。
有many similar questions。
main函数是程序的main函数,你要做的就是定义另一个函数,这个函数会从main函数中调用。您应该先阅读一些教程,因为显然您对自己在做什么不是很清楚
【参考方案1】:
在深入了解 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);
函数是编程语言中将功能分解为更小的可重用步骤的基本块。请注意,函数中的originalStr
和reverseStr
是函数参数的名称。它们是函数的局部变量。从main
传递的值在构造上碰巧具有相同的名称,但这不是必需的。从一本好的教程书中了解更多信息。
【讨论】:
以上是关于无法使用字符串将“main”转换为“void”函数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
套接字编程 connect() 函数错误——“无法将 'main(int, char**)::sockaddr* 转换为 'const sockaddr”