K&R (124). Пример использования массива указателей
Опубликовано plustilino в Апрель 18, 2012 - 13:58. Changed Апрель 18, 2012 - 14:08
Решение задач на языке программирования C
Массив months представляет собой массив указателей на первые символы строк. Например, months[3] содержит адрес на символ 'M', который можно получить так: *months[3].
Функция month_name возвращает указатель на первый символ строки. Но как ее получить всю по данному адресу? Ее можно считать в строку (массив символов), инкреминируя указатель, или просто посимвольно вывести на экран. Самый простой способ - это указать формат вывода "строка" (%s) для указателя на первый символ.
#include <stdio.h> char *month_name (int n); main () { int m, i; char *ch; char str[20]; // 1 --------------------------------------------- scanf("%d", &m); ch = month_name(m); i = 0; while (*ch != '\0') { str[i] = *ch; ch++; i++; } str[i] = '\0'; printf("%s\n", str); // 2 --------------------------------------------- scanf ("%d", &m); ch = month_name(m); while (*ch != '\0') printf("%c", *ch++); printf("\n"); // 3 -------------------------------------------- scanf ("%d", &m); ch = month_name(m); printf ("%s\n", ch); } char *month_name (int n) { static char *months[] = { "Illegal month", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; return (n < 1 || n > 12) ? months[0] : months[n]; }
Последние комментарии
2 дня 3 часа назад
3 дня 7 минут назад
4 дня 22 минуты назад
6 дней 16 часов назад
1 неделя 4 часа назад
1 неделя 2 дня назад
2 недели 1 день назад
2 недели 1 день назад
2 недели 6 дней назад
3 недели 5 часов назад