【发布时间】:2015-08-31 13:43:56
【问题描述】:
我正在尝试反转一个字符串(char 的数组)但收到此错误:
错误:'for' 循环初始声明只允许在 C99 模式下
有人可以帮我看看我的代码有什么问题吗?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char myString[] = "My name is Blalalalala";
char reversedString[] = "";
int count = 0;
for(int i = sizeof(myString) - 1; i >= 0; i--){
reversedString[count++] += myString;
}
for(int i = 0; i < sizeof(reversedString); i++){
printf("%c", reversedString[i]);
}
return 0;
}
【问题讨论】:
-
c89 中的标头不允许数据声明。修复指定 -std=c99 或将 i 的数据类型声明移出循环以实现最大可移植性
-
您访问的
reversedString越界,您需要支持C99 或更高版本的编译器。 -
^ 这两件事都是真实的,需要在 OP 的代码中解决。将
reversedString变成myString大小的缓冲区,并在循环构造之外初始化i。