При использовании scanf () он регистрирует символ, который мне не нужен, hexdump отображает его как 00 - PullRequest
0 голосов
/ 26 октября 2019

Я делаю простую RLE в C, она сканирует символы и выводит их в сжатом формате в стандартный вывод, но первый символ, проанализированный с помощью hexdump, имеет рядом с ним 00. Любой способ избавиться от этого парня?

#include <stdio.h>
#include <ctype.h>

int main()
{
    char current, previous = 0;
    int AoR = 1;
    float unc_am = 0, am = 0, ratio;
    while (scanf(" %c", &current) != EOF)
    {
        if (isupper(current))
        {
            if (current != previous && AoR == 1)            //ONCE
            {
                printf("%c", previous);
                AoR = 1;
                am++;

Это просто начало, сам scanf находится в состоянии while.

hexdump выглядит так:

hexdump main.log
0000000 4200 5757 3342 3757 3742 3357 3342 3457
0000010 3342 3657 3942 3657 3642 000a          
000001b

Или это, если сравнивать с тем, что я на самом деле хочу сделать.

Hexdump

EXPECTED OUTPUT                                 CURRENT OUTPUT
================================================================================================
00000000: 42 57 57 42 33 57 37 42  BWWB3W7B   | 00000000: 00 42 57 57 42 33 57 37  .BWWB3W7
00000008: 37 57 33 42 33 57 34 42  7W3B3W4B   | 00000008: 42 37 57 33 42 33 57 34  B7W3B3W4
00000010: 33 57 36 42 39 57 36 42  3W6B9W6B   | 00000010: 42 33 57 36 42 39 57 36  B3W6B9W6
00000018: 36 0a                    6.         | 00000018: 42 36 0a                 B6.

Есть какие-нибудь подсказки, как решить эту проблему?

...