gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:36 26 4
gpt4 key购买 nike

我正在尝试反转字符串(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 标准上使用。在此之前,所有变量声明都应该在 block 的开头完成。

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

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

也就是说,让我们看看代码中的实际问题。

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

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

      reversedString[count++] += myString;

关于c - 使用 `reverseStr()` 在 C w/o 中反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32312763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com