gpt4 book ai didi

c - 在不使用字符串库函数的情况下替换 C 中的子字符串

转载 作者:行者123 更新时间:2023-12-01 23:43:45 26 4
gpt4 key购买 nike

虽然这段代码很糟糕,而且我已经清楚地错误地解决了这个问题,但这段代码(暂时)有效。我想弄乱它,但我真的不知道我在这里做错了什么。目标是不使用任何内置函数,获取字符串“This is a test”并将“te”替换为“gho”以拼出“This is a ghost”。

int main(int argc, const char * argv[]) {

char *s = "This is a test";
char *newstring = malloc(strlen(s));


for (int i = 0 ; s[i] != '\0' ; i++){
if (s[i] == 't' && s[i+1] == 'e') {
newstring[i] = 'g';}
else if (s[i] == 'e' && s[i+1] == 's') {
newstring[i] = 'h';}
else if (s[i] == 's' && s[i+1] == 't') {
newstring[i] = 'o';
}
else if (s[i] == 't') {
newstring[i] = 's';
}
else {
newstring[i] = s[i];
}
}
printf("%st",newstring);


return 0;
}

我的问题是我不知道如何在 C 中将字符追加到新字符串,以便在仅替换单个字符的同时保持原始字符串的完整性。

最佳答案

char *s = "This is a test";
int len = 0;

while(s[len++]);//strlen(s) + 1
for (int i = 0 ; s[i] != '\0' ; i++){
if (s[i] == 't' && s[i+1] == 'e') {//count "te"
++len;
++i;
}
}

char *newstring = malloc(len);
int j = 0;
for (int i = 0 ; s[i] != '\0' ; i++){
if (s[i] == 't' && s[i+1] == 'e') {
newstring[j++] = 'g';
newstring[j++] = 'h';
newstring[j++] = 'o';
++i;
} else {
newstring[j++] = s[i];
}
}
newstring[j] = '\0';
puts(newstring);
free(newstring);

关于c - 在不使用字符串库函数的情况下替换 C 中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112454/

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