我需要找到一种在 C
中使用指针反转字符串的方法。我也不应该使用数组表示法或字符串库函数。
这是我当前的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
//Reverse2
char *forward = "123";
char *back = malloc(sizeof(char) * 4);
reverse2(forward, back);
return 0;
}
void reverse2(char *string, char *string2) {
int counter = 0;
char *string1 = string;
while (*string1) {
counter += 1;
string1 += 1;
}
string1--;
int i;
for (i = 0; i <= counter; i++) {
*string2 = *string1;
string2 += 1;
string1--;
}
printf("%s", string2);
}
这是在 ideone
中运行时出现的错误:
Compilation error #stdin compilation error #stdout 0s 0KB
prog.c:8:2: warning: implicit declaration of function 'reverse2' is invalid in C99 [-Wimplicit-function-declaration]
reverse2(forward, back);
^
prog.c:41:6: error: conflicting types for 'reverse2'
void reverse2(char* string, char* string2){
^
prog.c:8:2: note: previous implicit declaration is here
reverse2(forward, back);
^
1 warning and 1 error generated.
最佳答案
你的编译错误是因为你调用了reverse2
在 main
,但 C 编译器不知道内部 main
什么reverse2
还因为reverse2
在 之后定义 main
. (C 编译器必须能够以流式方式编译 .c 文件,因此这意味着编译某些东西所需的一切 - 如函数 - 必须事先定义)
如果您颠倒这两个函数的顺序(即您将 reverse2
放在 main
之前),或者添加此声明:
void reverse2(char*, char*);
之前main()
那么该错误就不会发生。
(我没有检查你的代码,所以我不知道它是否做了你想要它做的,但你的问题是关于编译错误:不是代码是否真的反转了字符串)
关于c - 使用指针反转 C 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50031360/