使用`reverseStr()反转C/o中的字符串`
我试图反转字符串(字符数组),但出现以下错误: 错误:仅在C99模式下允许“for”循环初始声明 有人能帮我一下,告诉我我的代码出了什么问题吗使用`reverseStr()反转C/o中的字符串`,c,arrays,c99,C,Arrays,C99,我试图反转字符串(字符数组),但出现以下错误: 错误:仅在C99模式下允许“for”循环初始声明 有人能帮我一下,告诉我我的代码出了什么问题吗 #include <stdio.h> #include <stdlib.h> int main() { char myString[] = "My name is Blalalalala"; char reversedString[] = ""; int count = 0; for(int i = s
#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;
}
#包括
#包括
int main()
{
char myString[]=“我的名字叫布拉拉”;
char reversedString[]=“”;
整数计数=0;
对于(inti=sizeof(myString)-1;i>=0;i--){
reversedString[count++]+=myString;
}
for(int i=0;i
关于警告的问题(如果我们可以称之为问题)是
for(int i = .......
您正在为循环条件声明(并定义)i
变量。仅允许在C99
标准上使用。在此之前,所有变量声明都应该在块的开头完成
您可以在编译时使用--std=C99
强制编译器启用C99
以防万一,您没有C99
支持,您必须将i
的定义移到for
循环条件语句之外
也就是说,让我们看看代码中的实际问题
char reversedString[]=”代码>仅定义大小为1
的数组。之后,它们不会自动展开,因此您当前的代码将访问超出限制的内存来生成
myString
作为一个数组,数组名表示数组的基址,因此可能不想写入
reversedString[count++] += myString;
c89中的标头不允许使用数据声明。要修复指定-std=c99或将i的数据类型声明移出循环以获得最大可移植性,您正在访问
reversedString
越界,并且您需要一个支持c99或更高版本的编译器。^这两种情况都是正确的,需要在OP的代码中解决。将reversedString
放入一个大小为myString
的缓冲区,并在循环构造外部初始化i
。因此,基本上在c中,我不能在循环的内部声明变量@SouravGhosh@Michael不,您可以,但为此,您的编译器应该符合C99
或更高版本。