Laba9(отчёт)
.docСанкт-Петербургский Университет
телекоммуникаций имени проф. Бонч-Бруевича
ПРОГРАММИРОВАНИЕ НА ЯЗЫКАХ ВЫСОКОГО УРОВНЯ
Лабораторная работа №9
Работа со строками
Студент группы СУ-01
Соловьёв Константин
Вариант № 15
2011 г.
-
Постановка задачи
Имеется текст, состоящий из n(n <= 20) строк, который вводится с клавиатуры. Длина каждой строки не превосходит 128 символов. В каждой строке содержится не менее двух слов. Количество слов в строке не более 20. Отдельные слова отделяются друг от друга одним или более пробелами. Необходимо выполнить заданную обработку введенного текста. Вид обработки зависит от варианта задания и определяется данными табл. 9.1. Вывод результатов обработки текста должен выполняться только после завершения его ввода. При обработке текста необходимо учитывать возможность наличия во введенной строке ведущих и завершающих пробелов. Количество пробелов во введенном и обработанном тексте может не совпадать. При разработке программы для решения поставленной задачи необходимо в максимальной степени использовать функции.
Задание:
Удалить из каждой строки ее второе слово. |
Main файл:
Является главным связующим звеном в выполнении поставленной задачи. Его основная цель - это предоставление пользователю желаемый выбор выполнения операций с массивами и вызов функций для решения поставленных задач.
Код main.c файла:
#include "header9.h"
int main(void) {
int n;
char str[MSTR][MAXLEN];
char vix[MSTR][MAXLEN];
chislo_strok(&n);
printf("\nEnter text of %d lines: \n", n);
input_str(str, n);
printf("-----------------------------------\n");
delete_word(n, str, vix);
return (0);
}
Функция chislo_strok:проверяет количество строк;
int chislo_strok(int *n) {
printf("Enter the number of lines of text: ");
scanf("%d%*c", n);
while (*n > MSTR) {
printf("Range you number [1..%d]\n", MSTR);
printf("You number is: ");
scanf("%d%*c", n);
}
}
Функция input_str:предназначена для ввода строк с клавиатуры;
void input_str(char string[][MAXLEN], int n) {
char* simvol = NULL;
for (int s = 0; s < n; s++) {
fgets(string[s], MAXLEN, stdin);
simvol = strchr(string[s], '\n');
if (simvol != NULL)
*simvol = '\0';
}
}
Функция delete_word:удаляет второе слово из каждой строки и выводит получившиеся строки на экран;
void delete_word(int n, char string[][MAXLEN], char strout[][MAXLEN]) {
printf("\n");
char in[MAXLEN];
for (int i = 0; i < n; i++) {
char out[MAXLEN] = "";
int test = 0;
strcpy(in, string[i]);
char *p = strtok(in, " ");
while (p) {
test++;
if ((test == 1) || (test > 2)) {
strcat(out, p);
strcat(out, " ");
}
p = strtok(NULL, " ");
}
strcat(out, "\n");
strcpy(strout[i], out);
puts(strout[i]);
}
printf("-----------------------------------\n");
}
Заголовочный файл header9.h:
#include <stdlib.h>
#include <stdio.h>
#include<string.h>
#define MAXLEN 129
#define MSTR 20
Тестирование программы:
tyudjfsk mnxvbsh lkjsdf kjhksdf
sfasd ureu kjhkj m,nmn
kjhb kjhbkjb fgfdfg vb
-----------------------------------
tyudjfsk lkjsdf kjhksdf
sfasd kjhkj m,nmn
kjhb fgfdfg vb
-----------------------------------