Проверьте код легкой программы - C (СИ)
Формулировка задачи:
Задана последовательность слов. Напечатайте эту же последовательность слов в обратном порядке.
#include <iostream.h>
#include <string.h>
#include <stdio.h>
int main()
{
char s[256]; //строка исходная
char words[30][256]; //сюда будем записывать слова
char *d=" ,"; //разделители
int count=0; //количество слов
printf("Enter your string:\n");
while((s=getchar())!=EOF)
count++;
char *p;
p=strtok(s, d); //первое слово
for(;str[i]!='\0' && str[i]=' ';i++)
{
word[p]=str[i]; //записываем первое слово
count++;
while(p=strtok(NULL, d)) //остальные слова
word[d]=str[i];
/* strcpy(words[count++], p); */ //записываем остальные слова
for (int i=count-1; i>=0; i--) //в обратном порядке выводим
printf("%d\n", word[i]);
system("PAUSE");
return 0;
}Решение задачи: «Проверьте код легкой программы»
textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
enum{
MAX_SIZE_STRING = 256,
MAX_NUMBER_WORDS = 30
};
int main(void){
const char delim[] = " ,\n";
char str[MAX_SIZE_STRING];
char words[MAX_NUMBER_WORDS][MAX_SIZE_STRING];
printf("Enter your string: ");
char *word = strtok(fgets(str, MAX_SIZE_STRING, stdin), delim);
int count = 0;
for(; word; word = strtok(NULL, delim)) strcpy(words[count++], word);
for (int i = count - 1; i >= 0; --i) printf("%s\n", words[i]);
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с памятью, вводом/выводом и строками.
- Определяем значения констант для ограничения размеров строк и количества слов.
- Определяем функцию main() как точку входа в программу.
- Инициализируем строку-разделитель для разделения входной строки на слова.
- Выделяем память под строку, которую будет заполнять пользователь.
- Выделяем память под массив строк, который будет хранить слова.
- Запрашиваем у пользователя ввод строки.
- Находим первое слово в строке, используя функцию strtok().
- Считываем количество слов в строке.
- Копируем слова в массив.
- Выводим слова в обратном порядке.
- Завершаем программу успешно.