Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用`reverseStr()反转C/o中的字符串`_C_Arrays_C99 - Fatal编程技术网

使用`reverseStr()反转C/o中的字符串`

使用`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

我试图反转字符串(字符数组),但出现以下错误:

错误:仅在C99模式下允许“for”循环初始声明

有人能帮我一下,告诉我我的代码出了什么问题吗

#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
    或更高版本。