2日前にCの学習を始めましたが、課題の作業中に問題が発生しました。 char配列から文字のリストを取り出し、連続する文字を数え、それらを数字に置き換えることで文字のリストを短縮することを意図しています。 「aaaabbbbccccc」を「a4b5c5」とします。これが最初のif文を通じて倍の間違った量を行く、と私は理由を把握することはできませんいくつかの理由についてIf文での文字の比較
#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;
}
:これは私がこれまで持っているコードです。それは性格平等声明と関係がありますか?出力は
CHECK HERECHECK HERECHECK HERE
[letters in newString]
これは18行目のエラーですが、 '; ++ 'がありません'; ' –
'' \ 0''という文字列を 'newString'に書いたか、' i + 1'操作で隠していますか? ?それを印刷する前に 'newString [end] = '\ 0';'がなければなりません。 –
カウント値は出力されません。また、繰り返しがない場合、出力文字列( 'newString')は小さすぎます。 – BLUEPIXY