Pie*_*ter 0 c pointers cstring
我有以下代码:
int main() {
char *sPPhrase[51];
/* Input */
printf("Enter string (max. 50 chars):\n");
fflush(stdout); /* Works around an annoying Eclipse bug that fails to display the output from the printf command */
scanf("%s", *sPPhrase); /* Won't work */
/* More code goes here */
}
Run Code Online (Sandbox Code Playgroud)
该scanf()命令失败,我想,是因为*sPPhrase不可写的sPPhrase指向一个字符串常量.编译器没有任何错误的线索.稍后,我需要将此字符串传递给此函数:
char* reverse(char* sPPhrase[]);
字符串常量不可写,但我需要将此char*传递给此函数.如何重写我的代码以使其工作?
您正在声明一个指针数组,而不是一个字符数组(通常用作字符串).
你需要这样声明:
char sPPhase[51];
Run Code Online (Sandbox Code Playgroud)
此外,sscanf会让你遇到麻烦:最好使用fgets读取有界缓冲区中的字符串:
int main() {
char sPPhrase[51];
printf("Enter string (max. 50 chars):\n");
fflush(stdout);
fgets(sPPhrase, 50, stdin); // leave one byte for '\0'
// More code
}
Run Code Online (Sandbox Code Playgroud)
我不知道'反向'是做什么的,但你应该把它定义为:
char* reverse(char* sPPhrase);
Run Code Online (Sandbox Code Playgroud)
如果它正在进行操作,您甚至不需要返回值.如果你这样做,请不要忘记在完成后释放它.