【发布时间】:2010-05-13 20:31:57
【问题描述】:
在编译并运行这个小程序以反转字符串时,在任何输出发生之前我都会遇到分段错误。如果这是一个明显的问题,请原谅我,我对 C 还是很陌生。
#include <stdio.h>
int reverse(char string[], int length);
int main() {
char string[] = "reversed";
printf("String at start of main = %s", string);
reverse(string, sizeof(string));
printf("%s\n", string);
return 0;
}
// Reverse string
int reverse(char string[], int length) {
int i;
char reversed[] = {};
int temp;
for(i = 0; i < length; ++i) {
temp = string[i];
reversed[length - i] = temp;
}
return 0;
}
【问题讨论】:
-
代码不能编译为 C,因为空的
{}是 C 中的语法错误。代码也不能编译为 C++,因为它试图创建一个大小为零的数组。这应该是什么语言? -
@AndreyT - 应该是 C.
-
@Leda:如果这应该是 C,那么你需要让你的编译器遵循 C 语言的规则。
char reversed[] = {}声明不能编译为 C 语言。需要编译器指出来。 -
@AndreyT。很明显,Leda 才刚刚开始学习 C。期望他/她了解 C/C++ 标准等之间的差异是不合理的。所以我想说“C”标签优先于代码中使用的任何 C++ 结构。编辑:我看到 Leda 回答了这个问题。
-
我认为有足够多的“为什么会出现这个段错误”的问题来保证创建一个新站点。
标签: c string segmentation-fault reverse