@Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171
|
22.12.2012, 16:55
|
|
MrGluck, тогда последняя строка не обработается
Добавлено через 2 минуты
C | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| #include <stdio.h>
#include <Windows.h>
#include <string.h>
#define MAX_LENGTH 256 //Максимальная длина строки
int main() {
char str[MAX_LENGTH], min[MAX_LENGTH], max[MAX_LENGTH], buf[MAX_LENGTH]; // buf для временного хранения строк между пробелами
printf("Input string: ");
gets(str); // ввод строки до нажатия ENTER
min[0] = '\0'; // установка символа конца строки в начало (пустая строка)
max[0] = '\0';
int i, j = 0; // индекс i идет по введенной строке до конца, j для добавления символов в буффер
for ( i = 0; i <= strlen(str) ; i++) { //цикл пока не переберем все символы строки (включая символ конца строки)
if( str[i] != ' ' && i != strlen(str) ) { // добавляем символы в буфер пока не встретим пробел или пока строка не закончится
buf[j++] = str[i];
} else { //Если встретили пробел или строка закончилась
buf[j] = '\0'; //Выставляем символ конца строки в конец buf (Получилась готовая трока)
if(strlen(buf) != 0) { // Если строка не пустая
if(strlen(min) == 0 || strlen(min) > strlen(buf)) { // Если минимальная строка пока не находилась или прочитанная в буфер строка меньше минимальной
strcpy(min, buf); // сохраняем значение прочитанной строки в min
}
if(strlen(max) == 0 || strlen(max) < strlen(buf)) { // Аналогично для max
strcpy(max, buf);
}
}
j = 0; //
buf[0] = '\0'; //"чистим" буфер для считывания новых строк
}
}
if(strlen(min) == 0) { // Если минимальной строки (как и максимальной) нет, то значит ничего не было введено
printf("Empty string\n");
}
else {
printf("Max: '%s', with length %d\n", max, strlen(max));
printf("Min: '%s', with length %d\n", min, strlen(min));
}
system("pause");
} |
|
1
|