Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/27: Рейтинг темы: голосов - 27, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 9
1

Прочитать из юникод файла некий текст

02.04.2010, 00:11. Показов 5080. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Все добрый день. Собственно есть цель прочитать из юникод файла некий текст.
Делаю так
C
1
2
3
4
5
 wchar_t string[10];
  FILE *f;
  f=fopen("test.txt", "rb");
  fgetws(string, 100, f);  
  printf("%s\n", string);
Но вместо строки получаю первую букву слова и далее кракозябры. Помню что юникод вещь динамическая и что символ может быть немного больше одного байта. И так почему глючит подобная запись? Какие ошибки были сделаны мной? Очень важно указать на все ошибки т.к. действительно хочу освоить все тонкости языка. Язык программирования именно АНСИ Си. Операционка - окна, если что.
Если уже была такая тема - не пинайте сильно. Не нашел поиск по форуму.

Заранее спасибо за ответы!

Добавлено через 8 часов 47 минут
На правах UP
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2010, 00:11
Ответы с готовыми решениями:

Из файла прочитать текст и в этом тексте заменить все пробелы на _ и записать исправленный текст обратно
задача написать программу на assembler, под dos Нужно из файла прочитать текст и в этом тексте...

Прочитать текст из файла, затем удалить из текста все буквы вашего имени и записать текст в новый файл
Создать Windows – приложение, в котором производите запись считывание текста из файла, затем...

Дописать в конец a.jpeg некий секретный текст. Вывести этот текст на экран
Как мне стало известно все .jpeg оканчиваются на маркер FFD9. Его мы и будем искать при выводе...

Прочитать текст из файла
Прочитать английский текст из файла и выводит только те слова которые начинаются с гласных букв.

7
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
02.04.2010, 00:20 2
http://msdn.microsoft.com/en-u... 80%29.aspx
прочти внимательно.
особенно про получение инфы об ошибках.
2
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 9
04.04.2010, 00:32  [ТС] 3
Итоги: да там все очень хорошо и красвио расписано(про ссылку на мсдн) и все должно работать, но при попытке компиляции приведенного там примера была получена ошибка. Такая ошибка обычно выскакивает, когда пишется функция и при этом забывается, что надо бы мэйн куда-нибудь засунуть.
Переписал программу так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <wchar.h>
 
int main( void )
{
   FILE *stream;
   wchar_t line[100];
 
  if((stream=fopen("test.txt", "rt"))==NULL)
  {
   perror("Error:");                             
  }
  
  fgetws(line, sizeof(line), stream);
  printf("%ls", line);
  
 system("pause");
 return 0;
}
Итог тот же самый: читаем первую букву из строки и все.
Есть конечно идея обнулить строку. Или использовать присловутый memset(line, '\0', 100)
Для приведенного мной примера. Из аски все читается просто и легко, но задача стоит прочитать из юникода...
Господа приведите пожалуста рабочий пример чтения из юникод-файла хотябы 3 юникод-знаков.
Буду очень признателен.
Кстати, если использовать setlocale, поможет ли это?

p.s. если по честному, то перекопал уже весь гугл и яндекс и ничего...

Добавлено через 4 часа 19 минут
Собственно день гугления и результат есть, правда не совсем то, что хотелось бы. Везде одно и тоже, во всех статьях кивает на UTF-8.
В общем нужен совет и помощь от более опытных программистов. Самому немного трудно пока что вникнуть. Если есть возможность, то буду благодарен за помощь.
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.04.2010, 00:38 4
в Си, я в юникодом не работал, ничего конкретного сказать не могу.
в С++, файловые объекты понимают юникод.
0
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 9
04.04.2010, 11:23  [ТС] 5
Ясно. Продолжим гуглить.

Добавлено через 8 минут
Вопрос закрыт: http://www.codeproject.com/KB/... ocId138366

C language completely pre-dates either Unicode and Windows, and -in fact- does not provide any direct support for Unicode, but a number of library function had been adapted to take care of internationalization.
0
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 9
04.04.2010, 18:15  [ТС] 6
Хотя после смены компилятора на тот который поддерживает стандарт С99 вопрос открывается снова. И думаю добью его всеми известными способами.
итак на данный момент код немного в перемешку. Честно скажу что с юникодом никогда не работал и Карнеги и Ритчи про это в своем мануле ничего не рассказывают совсем. СОбственно обращаюсь к экспертам в Си, какие шаманские танцы с бубном надо произвести, чтобы текст прочитался нормально без всяких дополнительных кракозяблей. На данный момент слово читается, но в перемешку с каким-то мусором из памяти. Вот код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main()
 {
  FILE *f;
  wchar_t str[100], s[100];
  //memset(str, '\0', 100);
  if((f=fopen("unicode.txt", "rt, ccs=UTF-8"))==NULL)
     {
      perror("Error");                     
     }
     
  fgetws(s, sizeof(s), f);
  mbstowcs(str, s, 100);
  printf("%ls", s);
  return 0;     
 }
да, файл в ютф-8 сохранен.
0
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 9
04.04.2010, 19:09  [ТС] 7
Вот скрин того что выводится:
Прочитать из юникод файла некий текст

сосбственно, то ддni то что нужно получить. В сущность своей природы консоль не может отоброжать в англоязычных окнах подобные знаки: ä ö å и т.д.
0
0 / 0 / 0
Регистрация: 26.03.2016
Сообщений: 24
11.04.2016, 11:15 8
DmitrijN, Здравствуйте! А как вы решили эту проблему? Просто мне сейчас надо less написать и возникает проблема с выводом русских символов. Мучаюсь уже неделю с этим((
0
11.04.2016, 11:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2016, 11:15
Помогаю со студенческими работами здесь

Прочитать текст из файла
private void button1_Click(object sender, EventArgs e) { ...

Как прочитать текст с файла?
привет... , нубский вопрос: Как можно достать вес текст из файла? OS: Fedora 16 sdk: QtSDK ...

Прочитать текст файла в массив
написать программу, считывающую символьный файл в динамическую память целиком пословно, формируя...

Прочитать текст из файла в ресурсах
Всем здрасте! Пожалуйста помогите: Есть txt файл в ресурсах проекта, как прочитать его у меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru