Переписать все латинские буквы верхнего регистра из каждой строки в новый файл
1. ЦЕЛЬ РАБОТЫ: изучение файловых типов данных, приобретение практических навыков создания и обработки текстовых файлов.
Варианты заданий
Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл согласно своему варианту.
Из строк все цифры переписать в новый файл.
Переписать все строки в новый файл, заменив пробелы на запятые.
Переписать в новый файл все символы из строк, отличные от цифр.
Подсчитать количество слов в каждой строке и записать их в новый файл.
Переписать все строки в новый файл, заменив все буквы 'м' на 'М'.
В новом файле заменить все цифры на восклицательные знаки.
Переписать все латинские буквы верхнего регистра из каждой строки в новый файл.
Переписать в новый файл строки, удалив из них все русские буквы нижнего регистра.
В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра.
Переписать в новый файл все строки, заменив все русские буквы нижнего регистра на буквы верхнего регистра.
Все слова, начинающиеся с гласных переписать в один файл, а с согласных – в другой новый файл.
Варианты заданий
В соответствии с вариантом написать и выполнить программу.
Дана информация о пяти студентах. Запись имеет вид: фамилия, год рождения, факультет. Вывести данные о студентах по факультетам.
Дана информация о пяти школах. Запись имеет вид: номер школы, год, количество выпускников, число поступивших в ВУЗы. Вывести данные об общем количестве выпускников и доле поступивших в ВУЗ.
Дана информация о пяти комнатах в общежитии. Запись имеет вид: фамилии, номер комнаты, факультет, площадь. Вывести данные о комнатах по факультетам, а также количество комнат на факультетах.
Дана информация о пяти рабочих цеха. Запись имеет вид: фамилия, размер зарплаты, стаж работы. Вывести данные о рабочем с наибольшей зарплатой и наименьшим стажем.
Дана информация о четырех вузах. Запись имеет вид: название вуза, число студентов, количество факультетов, количество кафедр. Вывести данные об общем числе студентов, факультетов и кафедр.
Дана информация о шести вкладчиках в сберкассы. Запись имеет вид: фамилия, район, социальное положение, величина вклада. Вывести данные о том, сколько среди вкладчиков служащих, рабочих и колхозников.
Дана информация о пяти больных. Запись имеет вид: фамилия, возраст, пол, давление. Вывести данные о больных с повышенным давлением (больше 140) .
Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца, площадь, число комнат, этаж. Вывести данные о квартирах с площадью меньше 30 кв.м и подсчитать их количество.
Дана информация о шести студентах. Запись имеет вид: фамилия, год рождения, место рождения, факультет. Вывести данные о старших по возрасту студентах, предполагая что год рождения может быть одинаков.
Дана информация о пяти школах. Запись имеет вид: номер школы, год, количество выпускников, число поступивших в ВУЗы. Вывести данные о школе с самым большим отношением числа поступивших к числу выпускников.
Дана информация о пяти комнатах в общежитии. Запись имеет вид: фамилии, номер комнаты, факультет, площадь. Вывести данные о комнате, в которой наименьшая площадь.
Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца, площадь, число комнат, этаж. Вывести данные о квартирах с самой большой площадью и самой маленькой.
Решение
как бы твой вот этот код и должен был выводить, сначала заглавные, потом прописные. Иначе зачем ты использовал toupper?
Bзначально нужно создать файл из 1 строки, затем получить новый файл в котором заменить все латинские буквы верхнего регистра на буквы нижнего регистра.
Вот примерная программа не получается немного доработать, Подскажите
В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра
9. В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра. help
Текстовый файл.Заменить латинские буквы верхнего регистра на буквы нижнего регистра
Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл согласно.
Заменить все буквы нижнего регистра в строке на буквы верхнего регистра
Определить функцию, заменяющую все буквы нижнего регистра в строке на буквы верхнего регистра.
Преобразовать все буквы нижнего регистра в буквы верхнего регистра
Помогите решить эту задачу
Дано текст — последовательность кодов ASCII — на стандартном вводе программы. Последовательность конечна, но ее длина заранее неизвестна. Надо вывести на стандартный вывод исходный текст, заменив в нем строчные буквы латиницы (a, …, z) прописными (A, …, Z). Указание воспользоваться особенностью кодовой таблицы ASCII: коды прописных букв отличаются от кодов соответствующих строчных на постоянную величину (а именно: 32.) Дополнительно предполагая поддержку средой русскоязычной локали, реализуйте аналогичное преобразование для кириллических текстов (используя стандартные функции языка.)
2. Основные понятия
Файлы предназначены только для хранения информации, а обработка этой информации осуществляется программами. Использование файлов целесообразно в случае:
- долговременного хранения данных;
- доступа различных программ к одним и тем же данным;
- обработки больших массивов данных, которые невозможно целиком
разместить в оперативной памяти компьютера.
Файл, не содержащий ни одного элемента, называется пустым. Длина файла, т.е. количество элементов, не задается при определении файла.
При вводе и выводе данные рассматриваются как поток байтов. Физически поток – это файл или устройство (клавиатура или дисплей). В Си поток можно открыть для чтения и/или записи в текстовом или бинарном (двоичном) режиме. В текстовых файлах не употребляются первые 31 символ кодовой таблицы ASCII (управляющие), а символы конца строки 0x13 (возврат каретки, CR) и 0x10 (перевод строки LF) преобразуются при вводе в одиночный символ перевода строки \n (при выводе выполняется обратное преобразование). Эти символы добавляются в конце каждой строки, записываемой в текстовый файл. При обнаружении в текстовом файле символа с кодом 26 (0x26), т.е. признака конца файла, чтение файла в текстовом режиме заканчивается, хотя файл может иметь продолжение.
В двоичном режиме эти преобразования не выполняются, чтение продолжается, пока не встретится физический конец файла. При чтении символы не преобразуются и не анализируются.
Функция открытия потока fopen возвращает указатель на предопределенную структуру типа FILE (содержащую всю необходимую для работы с потоком информацию) при успешном открытии потока, или NULL в противном случае.
В заголовочном файле stdio.h содержится описание файлового типа FILE, с которым связывается файловая переменная (указатель на файл). При открытии файла указатель на файл связывается с конкретным файлом на диске и определяется режим открытия файла:
r (r+) - файл открывается для чтения (чтения и записи);
w (w+) - открывается пустой файл для записи (чтения и записи). Если файл с таким именем существует, он стирается;
a (а+)- файл открывается для дополнения в конец (чтения и дополнения).
Режим открытия может также содержать символы t (текстовый файл) и b (двоичный файл), указывающий на вид открываемого файла: rb, wb, ab, rt, at, rb+, wb+, ab+ и т.д.
Закрытие файла (текстового или бинарного) выполняется функцией fclose(), установка указателя на начало файла - функцией rewind(). Если при попытке чтения данных из файла встречается символ конца файла, то возвращается специальное значение EOF. Функция feof() проверяет, достигнут ли конец файла, связанного с потоком. Функция ferror() проверяет, не возникла ли ошибка записи или чтения при доступе к файлу. Запись данных в файл и чтение данных из файла можно выполнять разными способами:
функциями форматного ввода-вывода fscanf(), fprintf();
функциями неформатного ввода-вывода fread(), fwrite().
Если требуется сохранять и восстанавливать числовые данные без потери точности, то лучше использовать fread(), fwrite(). Если обрабатывается текстовая информация, которая будет просматриваться обычными текстовыми редакторами, то используется fgetс()- посимвольное чтение файла, посимвольная запись в файл - fputc() или функции fscanf(), fprintf(). Для чтения из файла и записи в файл строки используются функции fgets() и fputs().
Пример программы с использованием текстовых файлов
Создать текстовый файл "new1.txt" записав в него строку из 50 символов. Все символы, отличные от пробела, переписать в новый файл "new2.txt":
char text[]="one to tree four";
FILE *pf, *pr; // Указатели на файлы
pf=fopen("new1.txt","w"); // Создание нового файла new1.txt
fprintf(pf,"%s\n",text); // Запись в файл строки text
fclose(pf); // Закрытие файла pf
pf=fopen("new1.txt","r"); // Открытие файла pf для чтения
pr=fopen("new2.txt","w"); // Создание нового файла new2.txt
while (!feof(pf)) // Пока не конец файла
putc(ch,pr); // Запись в файл pr символа ch
fclose(pr); // Закрытие файла pr
rewind(pf); // Возврат указателя на начало файла pf
fgets(sl,50,pf); // Чтение из файла pf строки в переменную sl
printf("%s\n",sl); // Вывод строки sl на дисплей
pr=fopen("new2.txt","r"); // Открытие файла pr для чтения
while (!feof(pr)) // Пока не конец файла pr
putchar(ch); // Вывод символа ch на дисплей
fclose(pf); // Закрытие файлов
При чтении текстовых файлов лучше использовать функции getc или fgetc, так как при использовании fscanf (pr, “%s”, sl) читается только очередное слово до пробела или символа табуляции и требуется повторение этой функции многократно для других слов.
ВЫПОЛНЕНИЕ РАБОТЫ
Разобрать и проанализировать приведенную программу.
Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл согласно своему варианту.
Варианты заданий
1. Из строк все цифры переписать в новый файл.
2. Переписать все строки в новый файл, заменив пробелы на запятые.
3. Переписать в новый файл все символы из строк, отличные от цифр.
4. Подсчитать количество слов в каждой строке и записать их в новый файл.
5. Переписать все строки в новый файл, заменив все буквы 'м' на 'М'.
6. В новом файле заменить все цифры на восклицательные знаки.
7. Переписать все латинские буквы верхнего регистра из каждой строки в новый файл.
8. Переписать в новый файл строки, удалив из них все русские буквы нижнего регистра.
9. В новом файле заменить все латинские буквы верхнего регистра, на буквы нижнего регистра.
10. Переписать в новый файл все строки, заменив все русские буквы нижнего регистра, на буквы верхнего регистра.
11. Все слова, начинающиеся с гласных, переписать в один файл, а с согласных – в другой новый файл.
Цель работы: Приобретение практических навыков в составлении алгоритмов и программ со структурами.
Содержание
В следующей программе введенный пользователем текст на латинице переводится в верхний регистр, то есть строчные буквы становятся заглавными. Все прочие коды — включая заглавные буквы и символы, не являющиеся латинскими буквами — не меняются.
Обратите внимание на то, что с символами (переменными типа char ) можно оперировать как с числами. В частности, 'Z' - 'A' есть число, равное разности кодов символов A и Z , то есть (при использовании кодовой таблицы ASCII) 25 — число букв в латинском алфавите минус 1. Символы можно также сравнивать друг с другом, при этом сравниваются их коды.
Главный цикл (и условие корректности ввода) этой программы почти полностью совпадают с рассмотренными в разделе ASCII коды символов. Однако, вместо использования printf для вывода значений считанных кодов, здесь мы используем функцию putchar для вывода самих кодов (знаков), возможно — после преобразования. [1] В коде по-прежнему используются функции getchar и ferror . [2] [3]
Обратите внимание, что сформировать условие «конец потока» при вводе с клавиатуры можно вводом (в зависимости от системы и предполагая настройки по-умолчанию) Control-d или Control-z (также обозначаются C-d , ^D , C-z , ^Z .)
Приведенный выше код можно еще более упростить, если воспользоваться стандартной функцией преобразования регистра toupper , объявленной в заголовке ctype.h . [4]
Некоторые реализации языка, кроме того, определяют функции strlwr и strupr , которые переводят в нижний и верхний регистр строки, а не отдельные символы. Эти функции, однако, не являются стандартными и их наличие (или отсутствие) зависит от выбранной реализации языка.
Стандарт предусматривает также ряд средств для поддержки письменностей, отличных от «базовой» (26-символьной) латиницы. В основе такой поддержки — два следующих понятия:
- локаль — набор сведений о письменности, языке и культуре, включающий, помимо прочего, таблицы соответствия символов верхнего и нижнего регистров;
- широкие символьные типы ( wchar_t , wint_t ; англ. wide character ) — для представления ряда письменностей (например — основанных на иероглифах), а равно для представления текстов на нескольких языках, «байтового» типа char оказывается недостаточно; как следствие, в задачах, связанных с обработкой многоязычных текстов, его заменяет тип wchar_t ; аналогично, в операциях ввода-вывода используется тип wint_t (и константа WEOF .)
Соответственно, в исходный вариант вносятся следующие изменения.
- Появляется вызов setlocale ( LC_ALL , "" ) , инициализирующий локаль в соответствии с текущими настройками. (По-умолчанию, при запуске программы полагается setlocale ( LC_ALL , "C" ) — установка «стандартной» локали.) [5]
- Функции getwchar , towupper , putwchar заменяют соответствующие для «узких» символов ( getchar , toupper , putchar .) Соответственно меняются тип ( int → wint_t ) и константа признака исчерпания входного потока ( EOF → WEOF .) [6][7][8]
- Включаются соответствующие заголовки ( locale.h , wchar.h , wctype.h .)
Отметим, впрочем, что принятые в конкретном языке правила обращения со строчными и заглавными могут оказаться сложнее простой зависимости символ—символ, предполагаемой в данном примере. Так, например, правила немецкого языка ставят в соответствие строчной «ß» пару заглавных — «SS» (например: Straße → STRASSE ), что ни коим образом не может быть реализовано функцией towupper .
1. ЦЕЛЬ РАБОТЫ: изучение файловых типов данных, приобретение практических навыков создания и обработки текстовых файлов.
2. Основные понятия
Файлы предназначены только для хранения информации, а обработка этой информации осуществляется программами. Использование файлов целесообразно в случае:
- долговременного хранения данных;
- доступа различных программ к одним и тем же данным;
- обработки больших массивов данных, которые невозможно целиком
разместить в оперативной памяти компьютера.
Файл, не содержащий ни одного элемента, называется пустым. Длина файла, т.е. количество элементов, не задается при определении файла.
При вводе и выводе данные рассматриваются как поток байтов. Физически поток – это файл или устройство (клавиатура или дисплей). В Си поток можно открыть для чтения и/или записи в текстовом или бинарном (двоичном) режиме. В текстовых файлах не употребляются первые 31 символ кодовой таблицы ASCII (управляющие), а символы конца строки 0x13 (возврат каретки, CR) и 0x10 (перевод строки LF) преобразуются при вводе в одиночный символ перевода строки \n (при выводе выполняется обратное преобразование). Эти символы добавляются в конце каждой строки, записываемой в текстовый файл. При обнаружении в текстовом файле символа с кодом 26 (0x26), т.е. признака конца файла, чтение файла в текстовом режиме заканчивается, хотя файл может иметь продолжение.
В двоичном режиме эти преобразования не выполняются, чтение продолжается, пока не встретится физический конец файла. При чтении символы не преобразуются и не анализируются.
Функция открытия потока fopen возвращает указатель на предопределенную структуру типа FILE (содержащую всю необходимую для работы с потоком информацию) при успешном открытии потока, или NULL в противном случае.
В заголовочном файле stdio.h содержится описание файлового типа FILE, с которым связывается файловая переменная (указатель на файл). При открытии файла указатель на файл связывается с конкретным файлом на диске и определяется режим открытия файла:
r (r+) - файл открывается для чтения (чтения и записи);
w (w+) - открывается пустой файл для записи (чтения и записи). Если файл с таким именем существует, он стирается;
a (а+)- файл открывается для дополнения в конец (чтения и дополнения).
Режим открытия может также содержать символы t (текстовый файл) и b (двоичный файл), указывающий на вид открываемого файла: rb, wb, ab, rt, at, rb+, wb+, ab+ и т.д.
Закрытие файла (текстового или бинарного) выполняется функцией fclose(), установка указателя на начало файла - функцией rewind(). Если при попытке чтения данных из файла встречается символ конца файла, то возвращается специальное значение EOF. Функция feof() проверяет, достигнут ли конец файла, связанного с потоком. Функция ferror() проверяет, не возникла ли ошибка записи или чтения при доступе к файлу. Запись данных в файл и чтение данных из файла можно выполнять разными способами:
функциями форматного ввода-вывода fscanf(), fprintf();
функциями неформатного ввода-вывода fread(), fwrite().
Если требуется сохранять и восстанавливать числовые данные без потери точности, то лучше использовать fread(), fwrite(). Если обрабатывается текстовая информация, которая будет просматриваться обычными текстовыми редакторами, то используется fgetс()- посимвольное чтение файла, посимвольная запись в файл - fputc() или функции fscanf(), fprintf(). Для чтения из файла и записи в файл строки используются функции fgets() и fputs().
Пример программы с использованием текстовых файлов
Создать текстовый файл "new1.txt" записав в него строку из 50 символов. Все символы, отличные от пробела, переписать в новый файл "new2.txt":
char text[]="one to tree four";
FILE *pf, *pr; // Указатели на файлы
pf=fopen("new1.txt","w"); // Создание нового файла new1.txt
fprintf(pf,"%s\n",text); // Запись в файл строки text
fclose(pf); // Закрытие файла pf
pf=fopen("new1.txt","r"); // Открытие файла pf для чтения
pr=fopen("new2.txt","w"); // Создание нового файла new2.txt
while (!feof(pf)) // Пока не конец файла
putc(ch,pr); // Запись в файл pr символа ch
fclose(pr); // Закрытие файла pr
rewind(pf); // Возврат указателя на начало файла pf
fgets(sl,50,pf); // Чтение из файла pf строки в переменную sl
printf("%s\n",sl); // Вывод строки sl на дисплей
pr=fopen("new2.txt","r"); // Открытие файла pr для чтения
while (!feof(pr)) // Пока не конец файла pr
putchar(ch); // Вывод символа ch на дисплей
fclose(pf); // Закрытие файлов
При чтении текстовых файлов лучше использовать функции getc или fgetc, так как при использовании fscanf (pr, “%s”, sl) читается только очередное слово до пробела или символа табуляции и требуется повторение этой функции многократно для других слов.
ВЫПОЛНЕНИЕ РАБОТЫ
Разобрать и проанализировать приведенную программу.
Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл согласно своему варианту.
Варианты заданий
1. Из строк все цифры переписать в новый файл.
2. Переписать все строки в новый файл, заменив пробелы на запятые.
3. Переписать в новый файл все символы из строк, отличные от цифр.
4. Подсчитать количество слов в каждой строке и записать их в новый файл.
5. Переписать все строки в новый файл, заменив все буквы 'м' на 'М'.
6. В новом файле заменить все цифры на восклицательные знаки.
7. Переписать все латинские буквы верхнего регистра из каждой строки в новый файл.
8. Переписать в новый файл строки, удалив из них все русские буквы нижнего регистра.
9. В новом файле заменить все латинские буквы верхнего регистра, на буквы нижнего регистра.
10. Переписать в новый файл все строки, заменив все русские буквы нижнего регистра, на буквы верхнего регистра.
11. Все слова, начинающиеся с гласных, переписать в один файл, а с согласных – в другой новый файл.
Преобразовать буквы от k до х нижнего регистра в соответствующие верхнего регистра
Написать программу, выполняющую действия со строкой символов . Для модификации символов.
Переписать все латинские буквы верхнего регистра из каждой строки в новый файл
Переписать все латинские буквы верхнего регистра из каждой строки в новый файл. подобная.
В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра
В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра.
Во первых ты выводишь строку со второго символа, Во вторых не обнуляешь i перед вторым циклом, В третьих за такой стиль "while(ch[i]) printf("%c", toupper(ch[i++]));" надо руки отрывать.
Теперь выводит эту строку сначала полностью из заглавных букв и следом полностью из прописных
что еще не так?
Лабораторная работа № 8
Работа с файлами
Цель работы: изучение файловых типов данных, приобретение практических навыков создания и обработки текстовых файлов.
Читайте также: