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

Reversing a string in C w/o using `reverseStr()`

我正在尝试反转字符串(char 的数组)但出现此错误:

error: 'for' loop initial declarations are only allowed in C99 mode

有人可以帮助我并告诉我我的代码有什么问题吗?

#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;
}

关于此处警告的问题(如果我们可以称之为问题)是

  for(int i = .......

您在 for 循环条件中声明(和定义)i 变量。它只允许在 C99 标准之上。在此之前,所有变量声明都应该在块的开头完成。

您可以在编译时使用 --std=c99 强制您的编译器启用 C99

以防万一,您没有 C99 支持,您必须将 i 的定义移到 for 循环条件语句之外。

话虽如此,让我们看看代码中的实际问题。

  1. char reversedString[] = ""; 只定义了一个大小为 1 的数组。之后,它们不会自动 expanded,因此您当前的代码访问越界内存以生成 undefined behaviour.

  2. myString是一个数组,数组名代表数组的基地址,所以可能不想

      reversedString[count++] += myString;