gpt4 book ai didi

c - 基于\0 终止的循环无法正常工作?

转载 作者:行者123 更新时间:2023-11-30 17:10:01 25 4
gpt4 key购买 nike

我似乎无法理解为什么使用 arr[i]!='\0' 永远不会执行它应该执行的所有删除操作?我一直在使用与此类似的东西

/* This one is suppose to remove all the special characters & 0-9 from all    entries */

void keepAlphaOnly(char line[50])
{
int i = 0, j;
for (i = 0; line[i] != '\0'; i++) {
if (line[i] < 65 || line[i] > 122 || (line[i] > 90 && line[i] < 97)) {
for (j = i; j <= strlen(line); j++) {
line[j] = line[j + 1];
}
--i;//EDIT: adjust index to avoid skipping next char
}
}
}

int main(void) {
int i, j, N;
char str[100][50];

scanf("%d\n", &N);
for (i = 0; i < N; ++i)
gets(str[i]);
for (i = 0; i < N; i++)
keepAlphaOnly(str[i]);
for (i = 0; i < N; i++)
printf("%s\n", str[i]);
return 0;
}

要删除一些字符或进行排序和搜索或从字符串中删除,但它不会对整个字符串执行此操作,而是会像原始字符串一样留下一些字符?

最佳答案

您尚未将空字符放入"new"字符串中。

但你可以做到

int from = 0, to = 0;
for ( ;line[from]; ++from) {
if (isalpha(line[from])) {
line[to] = line[from];
to++;
}
}
line[to] = 0;

关于c - 基于\0 终止的循环无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054190/

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