outtext(150,150, ты же всё время выводишь в одну и ту же позицию т.е. тебе еще нужно позицию по Y передвигать
ну есть подозрение что выводить оно должно char*, а ты передаешь char. наверняка ждется строка с нулевым терминатором на конце. вот и сделай функцию char_to_str, которая в массив из двух байт будет сувать букву по 0 индексу и '\0' по первому. зы: какие именно параметры хавает outtext яхз, поэтому если не угадал - сори.
всё разобралсо... надо через буфер Code: char buf[2]; for(i=0; i<n; i++) { buf[0] = present[i]; buf[1] = 0; outtext(150,150,buf); }p
Мне нужно брать с файла 3.тхт пока он не будет окончен а с остальных брать по строке, и если дошло до конца брать сначала и так пока файл 3.тхт не будет окончен. Code: ifstream fin( "1.txt" ); ifstream fim( "2.txt" ); ifstream fib( "3.txt" ); string mlstr; string mainstr; string str_name; do { getline( fib, str_name ); getline( fin, mainstr ); getline( fim, malstr ); somefunction(str_name, mainstr, malstr); } while(!fib.eof() &&!fin.eof() &&!fim.eof());
Ant1b10t1k типа такого Code: void cycle_input(ifstream& file) { if(file.eof()) file.seekg(0, ios_base::beg); } void main() { ifstream fin( "1.txt" ); ifstream fim( "2.txt" ); ifstream fib( "3.txt" ); string mlstr; string mainstr; string str_name; do { getline( fib, str_name ); getline( fin, mainstr ); cycle_input(fin); getline( fim, malstr ); cycle_input(fim); somefunction(str_name, mainstr, malstr); } while(!fib.eof()); }
не вышло что то у меня, вот отрвок. кода что сдесь не так. Напомню мне нужно брать с файла потока(fib) пока он не будет окончен а с остальных брать по строке, и если дошло до конца брать сначала и так пока файл поток (fib) не будет окончен. Code: void cycle_input(ifstream& file) { if(file.eof()) file.seekg(0, ios_base::beg); } Code: do { cycle_input(fin); cycle_input(fim); cycle_input(fit); cycle_input(fite); cycle_input(file); getline( fib, str_1 ); getline( fin, mainstr ); getline( fim, mailstr ); getline( fit, str_themes); getline( fite, str_text ); getline (file,str_name); size_t pos = mainstr.find( ';' ); size_t pos2 = mainstr.find( '\0' ); size_t pos3 = mailstr.find(';'); size_t pos4 = str_1.find('\0'); size_t pos5 = str_themes.find('\0'); size_t pos6 = str_text.find('\0'); size_t pos7 = str_name.find('\0'); if ( pos !=string::npos ) { string strlog = mainstr.substr( 0, pos); string strp1 = mainstr.substr(pos+1,pos2); string strm2 = mailstr.substr(0,pos3); string m3 = str_base.substr(0,pos4); string themes = str_themes.substr(0, pos5); string text = str_text.substr(0, pos6); string name=str_name.substr(0, pos7); sendbuffer(strlog,strp1,strm2, m3, themes, text, name); } } while(!fib.eof());
мда. file.seekg(0, ios_base::beg); работает только при чтении файла, открытого с можификатором binary. чтото как то потоки ввода ацки кривые и я не вижу адекватного способа сбросить указатель чтения на начало файла. попробуй закрыть открыть. или просто юзай другой способ чтения через жопу но работает. Code: void cycle_input(ifstream& file, string& filename) { if(!file.eof()) return; file.close(); file.clear(); file.open(filename.c_str(), ios::in); } void main() { string fin_filename = "1.txt"; string fim_filename = "2.txt"; string fib_filename = "3.txt"; ifstream fin(fin_filename.c_str() ); ifstream fim( fim_filename.c_str() ); ifstream fib( fib_filename.c_str() ); string mlstr; string mainstr; string str_name; do { getline( fib, str_name ); cycle_input(fin, fin_filename); getline( fin, mainstr ); cycle_input(fim, fim_filename); getline( fim, mlstr ); } while(!fib.eof()); system("pause"); }
Короче, проблемма вот в чем. Есть цикл for(;, в нем находится вся программа, так же есть переменная live. Если она ровняется 1, то выполняется одно действие, если 2, то другое, если 3, то break; А если ввести другие знаки, кроме цифр, то получится так, что for(; будет работать безконечно. Подскажите, как профиксеть ?
Напиши код. Я нифига не понял ^^ Возможно тебе поможет оператор case и использование default. Откуда взялся while, если цикл for. Или цикл просто бесконечный. Вообщем насколько я понял так: Code: while(1) { switch( ) { case 0: case 1: ... case N: default: }} Любые действия со стороны юзера ты можешь контролировать. Или же ты можешь ввести обработку исключений.
Ладн, задам вопрос вот так: Есть переменная live Code: for(;;) { float live cin >> live; if (live==1) { Код... } if (live==2) { Код... } if (live=3) { cout << "Bye !"; break; } } Как сделать так, чтобы в переменную live, нельзя было записать ничего кроме цифр ?
Использование такого огромного количества условных операций не есть хорошо. Для таких случаев и придумали оператор множественного выбора. Используй его.
Code: exit(1);break; оО + разве я не то же самое написал парой постов выше? ) Зачем писать одно и тоже?
Code: #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <windows.h> typedef struct {char JMPCODE[3]; //JMP на код завантажника char OS[8]; //назва ОС, під якою форматировалсядиск uint16_t bpersect; //Байт у секторі unsigned char secperclust; //Секторів у кластері uint16_t reservsect; //У зарезервованих секторів unsigned char numFAT; } boot_t; int main(int argc, char ** argv){ char * disk_name = "\\\\.\\PhysicalDrive1"; boot_t boot; HANDLE h_disk=CreateFile(disk_name,GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING, 0, NULL); uint32_t read; if(h_disk != INVALID_HANDLE_VALUE) printf("the %s successfully opened\n", disk_name); printf("%d\n",GetLastError()); if(ReadFile(h_disk,buf,10,&r,NULL)) printf("The start of boot block successfully read\n"); printf("%d\n",GetLastError()); CloseHandle(h_disk); exit(EXIT_SUCCESS); } проблема состоит в том, что устройство оно открывает, а вот считывание не проходит и последней ошибкой является ошибка №87 - неправильный параметр, можете подскажите, что я тут неправильно сделал?
До самого дошло, что не так... Пипец, ненавижу иногда свою невнимательность.... ведь секторами-то читать надо, а не байтами )))