Вывод в читаемый файл и сортировка целых чисел оставляет пробел, который я не могу найти - PullRequest
0 голосов
/ 24 сентября 2019

Мой код принимает аргумент текстового документа и сортирует целые числа, но когда я запускаю тестирование, в конце он не получает простой пробел вместо \n, но я выясняю, как остановить последнее число в массиве с помощьюновая строка вместо пробела.Вот код:

    /* display values */
    for (i = 0; i < count; i++ ) {
        printf ("%ld ", sorted[i]);
    }

Вот результат теста и проблема:

Program Output
1: 1 2 3 4 5 5 7 8 9 9 9 10 10 11 11 12 14 17 18 20 20 20 24 24 25 25 26 26 27 27 28 28 29 30 30 30 30 31 33 35 35 36 38 40 40 41 42 42 42 47 47 47 48 48 48 48 50 50 51 52 52 52 54 54 57 57 57 57 57 60 61 61 62 62 62 63 64 66 66 66 67 67 69 70 72 72 73 73 75 77 80 82 83 83 83 84 85 86 87 88 88 88 89 91 92 93 94 94 96 97 97 99 [blank space]

Expected Program Output
1: 1 2 3 4 5 5 7 8 9 9 9 10 10 11 11 12 14 17 18 20 20 20 24 24 25 25 26 26 27 27 28 28 29 30 30 30 30 31 33 35 35 36 38 40 40 41 42 42 42 47 47 47 48 48 48 48 50 50 51 52 52 52 54 54 57 57 57 57 57 60 61 61 62 62 62 63 64 66 66 66 67 67 69 70 72 72 73 73 75 77 80 82 83 83 83 84 85 86 87 88 88 88 89 91 92 93 94 94 96 97 97 99
2: [new line]

Я пытался вставить \n в printf ("%ld ", sorted[i]); после sorted[i], но этонужно идти в конце массива, и я не уверен, как (или где), чтобы добавить его, вызывают больше проблем.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019
/* display values */
for (i = 0; i < count; i++ ) {
    printf ("%ld ", sorted[i]);
}

Выводит пробел после каждого числа.Если это не то, что вы хотите, не делайте этого.Может быть, вы хотите это:

/* display values */
if (count > 0)
    printf ("%ld", sorted[0]);
for (i = 1; i < count; i++ ) {
    printf (" %ld", sorted[i]); // space before every number but first
}
1 голос
/ 24 сентября 2019

Если кто-то не хочет дублировать код.

#include <stdio.h>

int main(void) {
    const size_t count = 100;
    size_t i;
    /* display values */
    for (i = 0; i < count; i++ ) {
        printf ("%s%ld", i ? " " : "", i + 1 /*sorted[i]*/ );
    }
    fputc('\n', stdout);
    return 0;
}

Я ожидаю, что он будет медленнее, но я думаю, что смысл кода яснее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...