这就是我想要做的,但我的代码要么不编译,要么给我一个意外的输出“BC”而不只是“B”。
#include <stdio.h>
void removeFirstAndLastChar(char** string) {
*string += 1; // Removes the first character
int i = 0;
for (; *string[i] != '\0'; i++);
*string[i - 1] = '\0';
}
int main(void) {
char* title = "ABC";
removeFirstAndLastChar(&title);
printf("%s", title);
// Expected output: B
return 0;
}
我在这里看了很多关于通过引用传递指针的答案,但是它们似乎都没有包含我想在removeFirstAndLastChar()函数中执行的操作。
答案 0 :(得分:2)
我不判断你的算法或C约定,评论你的问题的朋友是完全正确的。但如果你仍然这样做,你可以使用这种方法。
#include <stdio.h>
#include <string.h>
void removeFirstAndLastChar(char* string) {
memmove(string,string+1,strlen(string));
string[strlen(string)-1]=0;
}
int main(void) {
char title[] = "ABC";
removeFirstAndLastChar(title);
printf("%s", title);
// Expected output: B
return 0;
}