C++ 如何在给定文本中用字符数组替换符号
我有短信。例如:“你好,你叫什么名字?”我需要这样做:“你好,逗号,你叫什么,问号”C++ 如何在给定文本中用字符数组替换符号,c++,char,C++,Char,我有短信。例如:“你好,你叫什么名字?”我需要这样做:“你好,逗号,你叫什么,问号” 我需要使用字符数组(不是字符串类)更改带有单词的符号,我应该怎么做,请给我建议。我将字符串复制到了一个新的缓冲区。我费了一点劲才让它工作起来。我不知道这是否是你想要的 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { int i, j, k; size_t
我需要使用字符数组(不是字符串类)更改带有单词的符号,我应该怎么做,请给我建议。我将字符串复制到了一个新的缓冲区。我费了一点劲才让它工作起来。我不知道这是否是你想要的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int i, j, k;
size_t count_comma = 0;
size_t count_question_mark = 0;
char question_mark[] = "question mark";
char comma[] = "comma";
char *str;
size_t str_size;
char msg[] = "Hello, whats your name?";
size_t msg_size = strlen(msg) + 1;
for (i = 0; i < msg_size; i++)
if (msg[i] == ',')
count_comma++;
else if (msg[i] == '?')
count_question_mark++;
str_size = msg_size + 1
//- count_comma - count_question_mark
+ count_comma * strlen(comma)
+ count_question_mark * strlen(question_mark);
str = malloc(str_size);
for (j = 0, i = 0; i < msg_size; i++) {
if (msg[i] == ',') {
str[j++] = ' ';
i++;
for (k = 0; k < strlen(comma); k++) {
str[j++] = comma[k];
}
}
if (msg[i] == '?') {
str[j++] = ' ';
i++;
for (k = 0; k < strlen(question_mark); k++) {
str[j++] = question_mark[k];
}
}
str[j++] = msg[i];
}
str[j] = '\0';
printf("%s\n", msg);
printf("%s\n", str);
return 0;
}
#包括
#包括
#包括
内部主(空)
{
int i,j,k;
大小\u t计数\u逗号=0;
大小\u t计数\u问号\u=0;
字符问号[]=“问号”;
字符逗号[]=“逗号”;
char*str;
大小(str)大小;;
char msg[]=“你好,你叫什么名字?”;
大小=strlen(msg)+1;
对于(i=0;i
到目前为止,您遇到了什么问题?请阅读以下内容:。我需要使用字符数组(而不是字符串类)更改单词符号,--数组无法调整大小,那么如何使字符串“更大”?std::string
是动态的,所以它可以调整大小。问题太广泛了。谷歌“C替换文本字符串”。展示我们已经尝试了什么,我们将乐于帮助。你的程序是有效的C,但不是有效的C++,这个问题是问。您需要将C++中的<代码> MALLC/<代码>的结果显式地转换为正确的指针类型,而不应使用<代码> Malc C < /C> >和<代码> Primtf< /C>。相反,它应该是new
和cout