需要写一个字符串常量,我该如何解决这个问题呢?

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*传递给此函数.如何重写我的代码以使其工作?

flo*_*rin 6

您正在声明一个指针数组,而不是一个字符数组(通常用作字符串).

你需要这样声明:

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)

如果它正在进行操作,您甚至不需要返回值.如果你这样做,请不要忘记在完成后释放它.