gpt4 book ai didi

比较 If 语句中的字符

转载 作者:行者123 更新时间:2023-11-30 16:41:14 28 4
gpt4 key购买 nike

我两天前开始学习C,在做作业时遇到了问题。我们的目的是从字符数组中获取字符列表,并通过计算连续字符并将其替换为数字来缩短它。对“a4b5c5”说“aaaabbbbbccccc”。这是我到目前为止的代码:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
char letters[999];
char newString[100];
char counter[100];

printf("Please input a string: ");
fgets(letters, sizeof(letters), stdin);

int i;
int count = 1;
int end = 0;

for (i=0; i < strlen(letters); i++) {
if (letters[i] != letters[i+1] || letters[i+1] == '\0') {
newString[end] = letters[i];
end++;
printf("CHECK HERE");
count = 1;
} else if (letters[i] == letters[i+1]) {
count++;
}
}

printf("%s", newString);
return 0;
}

由于某种原因,第一个 if 语句执行的次数不正确,我不明白为什么。它与字符相等声明有关吗?输出结果是

CHECK HERECHECK HERECHECK HERE
[letters in newString]

最佳答案

像您所做的那样比较字符没有问题。但是,您的代码不会根据您的要求生成目标字符串。计数不会加载到新字符串中。

if(letters[i] != letters[i+1] || letters[i+1] == '\0') {
newString [end] = letters [i];
end++;
newString [end] = '0' + count; /* Converting integer count to ascii char */
end++;
}

注意:不要忘记以 null 结尾新字符串。
PS.: 如果计数 > 1 位(逐字节加载),则需要特殊处理。

关于比较 If 语句中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46349017/

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