Выходной массив в виде строки, разделенной запятыми в c - PullRequest
0 голосов
/ 15 октября 2018

У меня есть следующий массив:

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

int main () {

int openedLockers[5] = {0,1,2,3,4};


return 0;
}

И я хотел бы вывести «Открытые запирающиеся шкафчики: 0,1,2,3,4.»

Он специально должен заканчиваться напериод после последнего номера.Я не уверен, как сделать это в цикле for таким образом, чтобы мне не приходилось печатать часть «Открытые шкафчики:» более одного раза.

Ответы [ 5 ]

0 голосов
/ 15 октября 2018

Зацикливание только повторной части, чтобы избежать if s или других условных конструкций.Обратите внимание, что повторяемая часть повторяется на один раз меньше, чем количество элементов.

// before repeats, include first element
printf("Opened Lockers: %d", openedLockers[0]);

// repeat comma, space, element
for (int i = 1; i < 5; i++) {
    printf(", %d", openedLockers[i]);
}

// after repeats
printf(".\n");
0 голосов
/ 15 октября 2018
#include <stddef.h>
#include <stdio.h>

int main (void)
{
    int openedLockers[] = {0, 1, 2, 3, 4};
    int const n = sizeof openedLockers / sizeof *openedLockers;

    printf("Opened Lockers: ");

    for (int i = 0; i < n; ++i)
        printf("%d,", openedLockers[i]);

    printf("\b.");
}
0 голосов
/ 15 октября 2018

Очень простой способ достичь желаемого формата - использовать условный (троичный) оператор как часть вашей строки формата printf в цикле вывода, например,

#include <stdio.h>

int main (void) {

    int openedLockers[] = {0,1,2,3,4},
        n = sizeof openedLockers / sizeof *openedLockers;

    fputs ("Opened Lockers: ", stdout);

    for (int i = 0; i < n; i++)
        printf (i ? ",%d" : "%d", openedLockers[i]);
    puts (".");

    return 0;
}

Пример использования/ Вывод

$ ./bin/openlockers
Opened Lockers: 0,1,2,3,4.

Посмотрите вещи и дайте мне знать, если у вас есть дополнительные вопросы.

0 голосов
/ 15 октября 2018

Для этого без веток:

#include <stddef.h>
#include <stdio.h>

int main (void)
{
    int openedLockers[] = {0, 1, 2, 3, 4};
    size_t const n = sizeof openedLockers / sizeof *openedLockers;

    printf("Opened Lockers: ");

    for (size_t i = 0; i < n; ++i)
        printf("%d,", openedLockers[i]);

    puts("\b."); // overwrite the last comma with a period and add a newline.
}
0 голосов
/ 15 октября 2018
#include <stdio.h>

int main () {

int openedLockers[] = {0,1,2,3,4};

printf("Opened Lockers: ");

for (size_t i = 0; i < 5; i++) {
    printf("%d", openedLockers[i]);

    if (i != 4)
        printf(",");
    else
        printf(".");
}
return 0;
}


// Output : Opened Lockers: 0,1,2,3,4.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...