П р и м е р. Следующая программа сравнивает имена двух файлов, заданных в командной строке:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[ ])
{
if (!stricmp(argv[1], argv[2]))
printf(“Имена файлов одинаковы.\n”);
else printf(“Имена файлов различны\n”);
return 0;
}
Функция
size_t strlen(const char *str);
возвращает длину строки, оканчивающуюся нулевым символом, на которую указывает str. При определении длины строки нулевой символ не учитывается. Прототип находится в string.h.
Функция
char *strlwr(char *str)
преобразует символы строки, на которую указывает str, в символы нижнего регистра. Функция возвращает str.
Функция
char *strrev(char *str);
Изменяет на обратную последовательность символов в строке (за исключением нулевого символа в конце строки), на которую указывает str. Функция возвращает str. Прототип находится в string.h.
Функция
char *strstr(const char *str1, const char *str2);
возвращает указатель на первое вхождение в строку, на которую указывает str1, строки, на которую указывает str2. Если совпадений не обнаружено, возвращается NULL. Прототип находится в string.h.
П р и м е р. Следующая программа выведет строку “it is a test”:
#include <stdio.h>
#include <string.h>
int main(void)
{
char *p;
p = strstr(“this is a test”, “is”);
printf(p);
return 0;
}
Функция
char *strupr(char *str);
преобразует символы строки, на которую указывает str, в символы верхнего регистра. Функция возвращает str. Прототип находится в string.h.
Варианты заданий
1) Создать текстовый файл, состоящий из 5 строк, каждая из которых имеет не более чем по 10 строчных букв русского алфавита. Так как в языке С нет функции, которая преобразует символы русского алфавита из строчных в прописные (есть только для латинских букв), разработать такую функцию и использовать для преобразования символов из строчных в прописные в данном файле. Преобразованный текст записать в новый текстовый файл.
2) Создать текстовый файл, состоящий из 4 строк, каждая из которых имеет не более чем по 12 прописных букв русского алфавита и латинского алфавитов. Так как в языке С нет функции, которая преобразует символы русского алфавита из прописных в строчные (есть только для латинских букв), разработать функцию для преобразования любых букв из прописных в строчные и использовать для преобразования символов из прописных в строчные в данном файле. Преобразованный текст записать в новый файл.
3) Создать текстовый файл, состоящий из 6 строк не более чем по 15 символов. Написать программу, выполняющую следующие функции:
- подсчет общего количества символов;
- подсчет числа цифровых и нецифровых символов;
- подсчет частоты встречаемости последовательности символов “abc”.
4) Даны два символьных файла S1 и S2, содержащих слова, разделенные символом ‘/ ’. Создать файл S3, каждое слово которого образуется сцеплением слов из файлов S1 и S2, у которых совпадают первые символы. Для разделения слов использовать пробел. Если не произошло ни одного сцепления, выдать сообщение: “Файл S3 пуст”.
5) Дан символьный файл T. Группы символов, разделенные пробелами образуют слова.
Подсчитать количество слов в файле, найти самое длинное слово, подсчитать количество слов, состоящих из одного, двух, трех и т. д. символов.
6) Дан текстовый файл (файл состоящий из строк) F, содержащий программу на языке С. Проверить эту программу на несоответствие числа открывающихся и закрывающихся круглых скобок. Считать, что каждый оператор программы занимает не боле одной строки файла F.
7) Дан текстовый файл F. Записать в перевернутом виде строки файла F в файл G. Порядок строк в файле G должен быть обратным по отношению к порядку строк исходного файла F.
8) Дан файл F, компоненты которого являются целыми числами. Никакая из компонент файла F не равна нулю. Числа в файле идут в следующем порядке: десять положительных, десять отрицательных, десять положительных, десять отрицательных и т. д. Число компонент файла должно быть кратно 40. Переписать компоненты файла F в файл G, чтобы в файле G числа шли в следующем порядке: пять положительных, пять отрицательных, пять положительных, пять отрицательных и т. д.
9) Даны текстовый файл F и строка s. Получить все строки файла, содержащие в качестве фрагмента строку s.
10) Даны два текстовых файла F и G. Определить, совпадают ли компоненты (строки) файла F с компонентами файла G. Если нет, то вывести номер первой строки и позицию первого символа в этой строке, в которых файлы F и G отличаются между собой.
11) Дан текстовый файл F, каждая строка в котором состоит из одного слова, размер которого не более 20 символов. Переписать этот файл, разместив слова в алфавитном порядке.
12) Дан символьный файл F. Считая, что количество символов в слове не превышает двенадцати, определить количество слов (слова отделяются пробелами) в файле F; определить, сколько имеется в файле слов, соответственно, с одним, двумя, тремя и т. д. символами.