Программирование >>  Элементы языков с и с++ 

1 ... 60 61 62 [ 63 ] 64 65 66 ... 200


Текст программы приведен в листинге 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

C:\WNDOWS\system32temd.exe

1 200В - Блоннот

uimii

222222222 3333333333333

1 I.ri lUUWlJUUVJUWVIUll

eeeeeeeeeeeeeeeee

,lM продолжения нажните любую клавишу . . .

Файл Правка Формат Вид Справка

111111111

2222222222

33333333333333

t Окно ввода cipoK

2. Peiynbiai ввода: содержимое файла

Рис. 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); выделение памяти



1 ... 60 61 62 [ 63 ] 64 65 66 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика