|
Программирование >> Элементы языков с и с++
Текст программы приведен в листинге 9.3, а результат показан на рис. 9.2. 2008-ввод в файл.срр : Defines the entry point for the console application. ttinclude stdafx.h ttinclude <stdio.h> # include<s tdlib.h> ttinclude <inalloc.h> ttdefine eof признак конца ввода int tinain 0 { char * s = (char *)malloc(1024); if(s == NULL) printf( Insufficient memory available for s\n ); return(0); char *name=(char *)malloc(1024); if(name == NULL) { printf( Insufficient memory available for name\n ); return(0); name= c:\\2008.txt ; FILE *fp; errno t err; if( (err = fopen s( &fp, name, w )) !=0 ) if( (fp = fopen( name, w )) = NULL ) /*эта функция в данной верой среды не рекомендована к использованию, хотя работает нормально printf( Open File Error\n ); return (О) ; while(1) ( char *p=fgets( s, 1024, stdin ); читает в строку s из файла (здесь fp=stdin и файл всегда открыт) if( р == NULL) ( printf ( fgets errorW ) ; return (0) ; if(*p = eof) ввод строк завершен ( fclose(fp); закрытие файла return(0); int i=fputs(s,fp) /выводит строку s в файл fp if(i < 0) ( printf( fputs error\n ); return (0) ; ) while
Рис. 9.2. Результат ввода ASCII-строки Мы не зря написали, что вводились ASCII-строки. Действительно, все примененные в примере функции работают с таблицей кодирования символов. которая называется ASCII-таблицей. В ней одна половина отведена для кодирования символов английского алфавита, а другая - для кодирования символов национального алфавита (в данном случае кириллицы). Под код символа в такой таблице отводится один байт, который может обеспечить 256 различных кодовых комбинаций. Что же делать, если требуется ввести в файл строки сразу на нескольких языках? Здесь на помощь приходит Юни-код, таблица кодирования которого вмещает в себя коды символов практически всех известных языков, потому что для кодирования символа в такой таблице выделено два байта, которые могут обеспечить не 2* различных кодовых комбинаций, а 2. Описание символа в такой таблице уже будет не char, как для таблицы ASCII, а wchart. И функции работы с файлами, естественно, называются несколько иначе: □ fopen() переходит в wfopen(); □ printf О переходитв wprintf о; □ fgets () переходит в fgetws(); □ puts() переходит в putws(). Покажем на 3-х примерах, как работать с символами Юникода. Пример формирования файла из строк типа wcharjt Текст программы показан в листинге 9.4, а результат работы - на рис. 9.3. Листинг 9.4 2008-ВВОД с wchar t.cpp : main project file. ttinclude stdafx.h ttinclude <stdio.h> ttinclude<stdlib.h> ttinclude <malloc.h> using namespace System; ttdefine eof tt* признак конца ввода int main() { wchar t *s = (wchar t *)malloc(1024); выделение памяти
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |