在C中用两个字符替换一个字符
Replacing one character with two in C
我想用我的字符串中的两个字符替换一个字符。
void strqclean(const char *buffer)
{
char *p = strchr(buffer,'?');
if (p != NULL)
*p = '\n';
}
int main(){
char **quest;
quest = malloc(10 * (sizeof(char*)));
quest[0] = strdup("Hello ?");
strqclean(quest[0]);
printf(quest[0]);
return;
}
这很好用,但实际上我想替换我的“?”通过“?\ n”。 strcat 不适用于指针,对吗?我可以找到一个解决方案,在我的字符串中添加一个字符并将其替换为“\n”,但这不是我真正想要的。
谢谢!
编辑
在你最初的回答中你提到你想在后面追加一个换行符
?
,但现在这个引用不见了。
我的第一个回答解决了这个问题,但因为它已经消失了,我不确定你
好想要
新答案
您必须更改 strqclean
功能
// remove the const from the parameter
void strqclean(char *buffer)
{
char *p = strchr(buffer,'?');
if (p != NULL)
*p = '\n';
}
旧答案
strcat
使用指针,但 strcat
期望 C 字符串并期望
目标缓冲区有足够的内存。
strcat
允许您连接字符串。您可以使用 than 附加 \n
if
?
字符始终位于字符串的末尾。如果那个字符
你要替换的是在中间,你必须插入字符
中间。为此,您可以使用 memmove
来移动块
用于目标和源重叠时的内存。
#include <stdio.h>
#include <string.h>
int main(void)
{
char line[1024] = "Is this the real life?Is this just fantasy";
char *pos = strchr(line, '?');
if(pos)
{
puts(pos);
int len = strlen(pos);
memmove(pos + 2, pos + 1, len);
pos[1] = '\n';
}
puts(line);
return 0;
}
我想用我的字符串中的两个字符替换一个字符。
void strqclean(const char *buffer)
{
char *p = strchr(buffer,'?');
if (p != NULL)
*p = '\n';
}
int main(){
char **quest;
quest = malloc(10 * (sizeof(char*)));
quest[0] = strdup("Hello ?");
strqclean(quest[0]);
printf(quest[0]);
return;
}
这很好用,但实际上我想替换我的“?”通过“?\ n”。 strcat 不适用于指针,对吗?我可以找到一个解决方案,在我的字符串中添加一个字符并将其替换为“\n”,但这不是我真正想要的。
谢谢!
编辑
在你最初的回答中你提到你想在后面追加一个换行符
?
,但现在这个引用不见了。
我的第一个回答解决了这个问题,但因为它已经消失了,我不确定你 好想要
新答案
您必须更改 strqclean
功能
// remove the const from the parameter
void strqclean(char *buffer)
{
char *p = strchr(buffer,'?');
if (p != NULL)
*p = '\n';
}
旧答案
strcat
使用指针,但 strcat
期望 C 字符串并期望
目标缓冲区有足够的内存。
strcat
允许您连接字符串。您可以使用 than 附加 \n
if
?
字符始终位于字符串的末尾。如果那个字符
你要替换的是在中间,你必须插入字符
中间。为此,您可以使用 memmove
来移动块
用于目标和源重叠时的内存。
#include <stdio.h>
#include <string.h>
int main(void)
{
char line[1024] = "Is this the real life?Is this just fantasy";
char *pos = strchr(line, '?');
if(pos)
{
puts(pos);
int len = strlen(pos);
memmove(pos + 2, pos + 1, len);
pos[1] = '\n';
}
puts(line);
return 0;
}