gpt4 book ai didi

c - 从 C 中的字符串中删除指定的字符

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

我正在编写一个程序,它将在字符串数组中进行搜索,并且对于每个字符串,它将搜索指定的字符。如果找到该字符,请将其删除。在此示例中,我想删除字符“r”。

代码如下:

void convertStrings(char **line) {
for (int str = 0; str < MAX_LINE_LENGTH; ++str) {
for (int ch = 0; ch < MAX_STR_LENGTH; ++ch) {
if (line[str][ch] == 'r') {
removeChar(line[str], 'r');
}
}
}
}

void removeChar(char *str, char c) {
int i = 0;
int j = 0;

while (str[i]) {
if (str[i] != c) {
str[j++] = str[i];
}
i++;
}
str[j]=0;
}

我不确定删除字符的算法是否正确,但主要错误在别处。更具体地说,我在行中遇到了段错误:

if (line[str][ch] == 'r') {

为什么我会遇到段错误?另外,removeChar 的算法是否正确?

这是我的主要功能:

int main() {
char line[3][10] = {"pep", "rol", "rak"};
printf("%s\n", line[1]);
convertStrings(line);
printf("%s\n", line[1]);
return 0;
}

提前致谢。

最佳答案

此代码适用于我的编译器:

#include<stdio.h>
#include<conio.h>
#define MAX_LINE_LENGTH 1024
#define MAX_STR_LENGTH 4
void removeChar(char *str, char c) {
int i = 0;
int j = 0;

while (str[i]) {
if (str[i] != c) {
str[j++] = str[i];
}
i++;
}
str[j]=0;
}

void convertStrings(char line[][MAX_STR_LENGTH]) { //change 1
for (int str = 0; str < MAX_LINE_LENGTH; ++str) {
for (int ch = 0; ch < MAX_STR_LENGTH; ++ch) {
if (line[str][ch] == 'r') {
removeChar(line[str], 'r');
}
}
}
}


int main() {
char line[3][MAX_STR_LENGTH] = {"pep", "rol", "rak"}; //change 2
printf("%s\n", line[1]);
convertStrings(line);
printf("%s\n", line[1]);
getch();
return 0;
}

关于c - 从 C 中的字符串中删除指定的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30599520/

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