我使用以下代码来反转char数组。我的代码和错误可以在下面找到。
我的代码:
char * reverseStr(char* s) {
int i=0; //legnth of string
while(s[i]) i++;
char reversed[i];
for(int j=0; j<i; j++) {
reversed[j] = s[i-j - 1]; //look at this later
}
return *(reversed);
}
错误:
Compiling...
Compile error: your program did not compile correctly:
program.c: In function 'char* reverseStr(char*)':
program.c:18: error: invalid conversion from 'char' to 'char*'
--> 17: }
--> 18: return *(reversed);
提前谢谢!
答案 0 :(得分:6)
答案 1 :(得分:2)
好吧,你要返回一个char而不是char *,所以你只返回反向字符串中的第一个字母而不是字符串。这会导致您的错误消息,因为您尝试将char视为char *。
答案 2 :(得分:2)
检查错误消息:
program.c: In function 'int itoa2(int, char*, int)':
program.c:45: error: invalid conversion from 'char' to 'const char*'
它清楚地告诉你错误是什么:从const char *到char
的无效转换答案 3 :(得分:0)
strcpy接收(char *,const char *)作为参数。但是,函数的返回类型是char,因此出现错误。
并且char reverse []被分配在函数的堆栈上,请不要将它用作返回值。
答案 4 :(得分:0)
在您的代码中i
不是const
。
char reverseStr(char* s) {
int i=0; // --->> NOT CONST
while(s[i]) i++;
char reversed[i];
for(int j=0; j<i; j++) {
reversed[j] = s[i-j - 1]; //look at this later
}
return *(reversed);
}
char reversed[i];
---&gt; C ++中的可变长度数组?应该在编译时知道i
。