печать номера строки в c с использованием getchar и putchar - PullRequest
0 голосов
/ 08 мая 2018

есть ли способ распечатать номер строки в C, используя только putchar и getchar и без массивов?

вывод должен выглядеть следующим образом.например, введите mink

01: mink
02: jaguar 

и т. д.

Номер строки должен быть от 01 до 50.

Это мой стартовый подход

#include <stdio.h>

int main() {
    int c;
    int counter = 1;

    while ((c = getchar()) != EOF) {
        putchar(c);
        if (c == '\n') {
            putchar(counter + '0');
            putchar(':');
            putchar(' ');
            ++counter;
        }
    }
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вам нужно сделать деление и мод на 10, чтобы получить цифру 10 и цифру единицы.

#include <stdio.h>
int main()
{
    int c;
    int counter=1;
    putchar('0');
    putchar('1');
    putchar(':');
    putchar(' ');
    while((c=getchar())!=EOF){
        putchar(c);
        if ( c == '\n' ) {
            ++counter;
            putchar(counter / 10 + '0');
            putchar(counter % 10 + '0');
            putchar(':');
            putchar(' ');

        }
    }
    return 0;
}
0 голосов
/ 08 мая 2018

Предполагая, что номер строки состоит всего из 2 цифр, вычислите и выведите эти цифры и префикс :.Чтобы избежать дублирования кода для начала файла и печати номера строки для несуществующей строки после конца файла, напечатайте номер строки перед первым символом каждой строки, то есть после перевод строки, если есть другой символ.Инициализация от lastc до '\n' обеспечивает печать номера строки перед первой строкой файла, если есть хотя бы одна строка.

Вот простая реализация:

#include <stdio.h>

int main() {
    int c, lastc = '\n';
    int counter = 1;

    while ((c = getchar()) != EOF) {
        if (lastc == '\n') {
            putchar('0' + counter / 10 % 10); // tenths digit
            putchar('0' + counter % 10);      // units digit
            putchar(':');
            putchar(' ');
            counter++;
        }
        putchar(c);
        lastc = c;
    }
    return 0;
}
...