我几周后又开始上学了,我试着练习一下。 我想创建一个单词并向后翻转的函数(word - > drow)。
我当然需要知道这个词的长度。我使用另一个函数来确定它的大小。不想使用任何内置函数。
这是确定单词长度的函数:
int largopal(char * palabra) //Devuelve la cantidad de caracteres de la palabra
{
int counter = 0;
while (palabra[counter] != '\0')
{
counter++;
}
return counter;
}
这是向后翻词的功能:
void darvuelta(char *pal){
int c = 0, i;
const int l = largopal(pal);
char t[l];
for (i = 0; i < l; i++){
}
}
在继续我的for
之前,我需要知道为什么编译器要求我给出&#34;一个常量表达式&#34;在char t[l]
并修复它。
我使用Visual Studio 2012,文件扩展名为c
,项目创建为win32控制台应用程序,我使用的是Win7企业,如果您需要更多信息请告诉我。这里提出第一个问题。
提前致谢。
迪马斯。
答案 0 :(得分:4)
这是错误的代码:
const int l = largopal(pal);
char t[l];
这是一个可变长度数组,因为编译器在编译时不知道l
的值是什么。
要解决此问题,您可以选择以下几种方法:
malloc()
和free()
。就个人而言,我建议选择3。
答案 1 :(得分:2)
您似乎没有在C99模式下编译代码。 C99和后者允许使用可变长度数组。使用选项std=c99
编译您的程序
另一个问题是在编译时不知道l
。