使用 `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
循环条件语句之外。
话虽如此,让我们看看代码中的实际问题。
char reversedString[] = "";
只定义了一个大小为 1
的数组。之后,它们不会自动 expanded,因此您当前的代码访问越界内存以生成 undefined behaviour.
myString
是一个数组,数组名代表数组的基地址,所以可能不想写
reversedString[count++] += myString;
我正在尝试反转字符串(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
循环条件语句之外。
话虽如此,让我们看看代码中的实际问题。
char reversedString[] = "";
只定义了一个大小为1
的数组。之后,它们不会自动 expanded,因此您当前的代码访问越界内存以生成 undefined behaviour.myString
是一个数组,数组名代表数组的基地址,所以可能不想写reversedString[count++] += myString;