Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > определить кодировку


Автор: andzhik 25.4.2010, 22:33
задание написать на насме из под линя прогу определяющую кодировки всех тхт-файлов(кодировки СР866 и кои8) в текущей директории.написал прогу на С для последующего дизассемблирования(только для одного файла).все на окнах работало, а вот под линём не работает.подскажите,пожалуйста,как переписать.

Код

#include <stdio.h>
int main()
{
unsigned char *simvol;
int file;
int ascii_kod=0,i=0,j=0,fl_KOI8=0,fl_CP866=0,n;
unsigned char ms[100]={0};
char* ERROR_MESSAGE="fail ne soderzhit simvolov kirillicy";
file=open("kodddddd.txt",0);
if(file==-1)
{
write(1,"Ne mogu otkryt fail",19);
return -1;
}
while(i<100)
{
if((n=read(file,simvol,1))!=0)
{
if(n==-1) {write(1,"oshibka chteniya faila",22);return -1;}
ascii_kod=*simvol;
if((ascii_kod>=128)&&(ascii_kod<=255))
{
ms[i]=*simvol;
i++;
}
}
else goto start;
}
start:
for(j=0;j<i;j++)
{
ascii_kod=ms[j];
if((ascii_kod>=192)&&(ascii_kod<=255)) fl_KOI8++;
if(((ascii_kod>=128)&&(ascii_kod<=175))||((ascii_kod>=224)&&(ascii_kod<=239))) fl_CP866++;
}
if(i==0) write(1,ERROR_MESSAGE,36);
else
{
if(fl_KOI8==i) write(1,"KOI8 kodirovka",14);
if(fl_CP866==i) write(1,"CP866 kodirovka",15);
}
return 1;
}


ЗЫ если кто может подскажите как определить текущую директорию(говорили юзать getdents), я пробовал только readdir(не пойму что в  getdents передавать).
ЗЫЫ еще просьба написать че вводить в командной стороке дабы получить из С-ишного кода ассемблерный.

M
MAKCim
Модератор: используйте тег код!


Автор: MAKCim 26.4.2010, 10:35
Цитата(andzhik @  25.4.2010,  22:33 Найти цитируемый пост)
ЗЫ если кто может подскажите как определить текущую директорию

man 3 getcwd
man 3 get_current_dir_name


Цитата(andzhik @  25.4.2010,  22:33 Найти цитируемый пост)
ЗЫЫ еще просьба написать че вводить в командной стороке дабы получить из С-ишного кода ассемблерный. 

Код

# gcc -S <C файл>

Автор: andzhik 26.4.2010, 21:29
извиняюсь:безбожно наврал, что меня интересует определение текущей директории.требуется получить имена всех файлов в ней лежащих...
getcwd, get_current_dir_name
как я понимаю это функции библиотеки С...мне же(т.к. задачу надо реализовать на ассемблере) необходимо использовать только системные вызовы(getdents либо readdir)...с риддиром понятно, хотелось бы разобраться с getdents-ом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)