Распечатать буквы слова с соответствующими им кодами - C (СИ)
Формулировка задачи:
пример:
Передать через командную строку слово и целое число N. Распечатать слово N раз.
что необходимо изменить в этой программе,если условие поставить вот так:
#include <stdio.h>
#include <stdlib.h> // прототип функции atoi
void main (int argc, char *argv[ ])
// функция main( ) с параметрами:
// аргумент argc содержит количество переданных параметров+1;
// второй аргумент — массив символьных строк argv —содержит
//сами параметры в виде строк, в argv[0]—имя файла программы
{ int i,N;
if (argc!=3)
{ puts(“ Надо передать два параметра “);
exit();} // прекращаем работу программы
N=atoi(argv[2]); // преобразуем строку в целое число
for (i=1; i<=N; i++) // печатаем второй параметр N раз
puts( argv[1] );
}Через командную строку передать слово и целое число N. N раз распечатать буквы слова с соответствующими им кодами.
Решение задачи: «Распечатать буквы слова с соответствующими им кодами»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(int argc, char* argv[])
{
long int i, N;
char* pch;
if(argc != 3)
fprintf(stderr, "Usage: %s WORD CNT\n", *argv), exit(1);
/* Пытаемся перевести строковое представление неотрицательного числа N
* в значение типа long int (длинное целое */
N = strtol(argv[2], &pch, 10);
/* Обработка неверных значений */
if(argv[2] == pch || *pch != '\0' || N < 0)
fprintf(stderr, "`%s' is not a valid non-negative integer\n", argv[2]), exit(1);
if(errno == ERANGE)
fprintf(stderr, "`%s' is out of range\n", argv[2]), exit(1);
if(errno == EINVAL)
fprintf(stderr, "No conversion was performed\n"), exit(1);
/* Выводим буквы и коды */
for(i = 0; i < N; ++i)
{
printf("Char | Code\n-----|-----\n");
for(pch = argv[1]; *pch; ++pch)
printf("`%c' | 0x%02x\n", *pch, (unsigned int) *pch);
putchar('\n');
}
exit(0);
}
Объяснение кода листинга программы
- Объединение вводит строку
Usage: %s WORD CNT\nдля вывода сообщения об использовании программы. - Затем код проверяет, что введенные аргументы соответствуют ожидаемым. Если аргументов меньше или больше трех, программа выводит сообщение об использовании и завершает работу.
- Затем код пытается преобразовать второй аргумент в целое число типа long int, используя функцию strtol. Если преобразование не удалось или результат отрицательный, программа выводит сообщение об ошибке и завершает работу.
- Если нет ошибок, программа выводит сообщение
Char | Codeи затем выводит коды символов введенного слова, используя цикл for и функцию printf. - Наконец, программа завершает работу с кодом 0, указывающим на успешное выполнение.