gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:51 24 4
gpt4 key购买 nike

我有以下代码:

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 */
}

scanf() 命令失败,我假设是因为 *sPPhrase 不可写,因为 sPPhrase 指向一个字符串常量。编译器不知道有什么问题。稍后,我需要将此字符串传递给此函数:

char* reverse(char* sPPhrase[]);

字符串常量不可写,但我需要将此 char* 传递给此函数。如何重写我的代码以使其工作?

最佳答案

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

你需要这样声明:

char sPPhase[51];

此外,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
}

我不知道“reverse”在做什么,但你应该将它定义为:

char* reverse(char* sPPhrase);

如果它是就地操作,你甚至不需要返回值。如果这样做,请不要忘记在完成后释放它。

关于c - 需要写入一个字符串常量,我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2141294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com