В чем может быть проблема - Создаю ящик и жду данные PHP: #include <windows.h> #include <conio.h> #include <iostream> using namespace std; HANDLE slot; char buffer[255]; int n; int main() { slot = CreateMailslotA("\\\\.\\mailslot\\mail1",0,MAILSLOT_WAIT_FOREVER,0); ReadFile(slot,(void*)buffer,7,(LPDWORD)n,0); cout << buffer; _getch(); CloseHandle(slot); return 0; } Открываю ящик и пишу данные PHP: #include <windows.h> #include <conio.h> #include <iostream> using namespace std; HANDLE h; int n; int main() { h = CreateFileA("\\\\.\\mailslot\\mail1",GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0); WriteFile(h,"testeng",7,(LPDWORD)n,0); CloseHandle(h); return 0; } В то время когда я начинаю писать в ящик, оба приложения вылетают с ошибкой "Память не может быть written.
Клиент: PHP: #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <windows.h> int _tmain(int argc, _TCHAR* argv[]) { HANDLE hFile; char *servName = "\\\\.\\Mailslot\\Laba2", *p; char s[20]; p = s; DWORD d = 20; LPDWORD lp = &d; //открываем существующий файл или создаем новый hFile = CreateFile(servName, GENERIC_WRITE , FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hFile == INVALID_HANDLE_VALUE) puts("Error server create!!!"); else { puts("Ok server find!!!"); puts("Please enter some text in file:"); gets(p); //присваиваем концу строки нулевой символ s[strlen(s)]='\0'; //запись в файл WriteFile(hFile, s, strlen(s), lp, NULL); gets(p); CloseHandle(hFile); } return 0; } Сервер: PHP: #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <windows.h> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { HANDLE pMailslot; char *servName = "\\\\.\\Mailslot\\Laba2", *p; char s[5]; p = s; DWORD d = 150; LPDWORD lp = &d; pMailslot = CreateMailslot(servName, 0, MAILSLOT_WAIT_FOREVER, NULL); if(pMailslot == INVALID_HANDLE_VALUE) cout<<"Don't create!!!"; else cout<<"Create server!!!"; //считывем из файла 7 байт BOOL res = ReadFile(pMailslot, p, 5, lp, NULL); cout<<endl; cout<<" Message from client: "<<endl; p[5]='\0'; cout<<p<<endl; CloseHandle(pMailslot); int a; cin>>a; } Попробуй ето!! всё рабоать должно!!
Вобщем нужно небольшой скриптик который выводит список папок в фаил.. Например; /home/$papka/user/$papka1 Имя папки1 нужно записать фаил.... т.е. заходим в /home/ получае имя всех директорий, заходим в подпапку /users/ опять получаем название папок и записываем в фаил.. и так в цикл... новояйте кому не трудно...
имеется переменная char следующего содержания: + bios_char 0x0012ee1c "021102E04BF90102000000000" char [51] Как получить из первых двух байт 20 значения 512? типа из дампа десятичное значение!!
Zitt Code: #include <sys/types.h> #include <dirent.h> #include <errno.h> #include <vector> #include <string> #include <iostream> using namespace std; int getdir (string dir, vector<string> &files) { DIR *dp; struct dirent *dirp; if((dp = opendir(dir.c_str())) == NULL) { cout << "Error(" << errno << ") opening " << dir << endl; return errno; } while ((dirp = readdir(dp)) != NULL) { files.push_back(string(dirp->d_name)); } closedir(dp); return 0; } int main() { string dir = string("."); vector<string> files = vector<string>(); getdir(dir,files); for (unsigned int i = 0;i < files.size();i++) { cout << files[i] << endl; } return 0; }
2 Zitt, вот еще примерчик, откопал в ахивах Code: #include <windows.h> #include <stdio.h> #include <conio.h> #define MAX 100 void FindDir(); main(int argc, char *argv[]) { FindDir("C:\\", "*.*"); } void FindDir(char* path,char* mask) { WIN32_FIND_DATA wfd; char file[100] = ""; HANDLE hfound; char newpath[MAX_PATH]; char fpath[MAX_PATH]; char delpath[MAX_PATH]; FILE *f; strcpy(fpath,path); strcat(fpath,"\\"); strcpy(delpath,fpath); strcat(fpath,mask); f = fopen("dirs.txt", "a"); if((hfound=FindFirstFile(fpath,&wfd))!=INVALID_HANDLE_VALUE) { if(!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,".")) { // printf("Error: %d\n", GetLastError()); } while(FindNextFile(hfound,&wfd)) { int i = 1; if(!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,".")) { i = 0; } if(i && (strcmp(wfd.cFileName, "..") != NULL)) fprintf(f, "%s\n", wfd.cFileName); } } fclose(f); FindClose(hfound); strcpy(fpath,path); strcat(fpath,"\\*.*"); if((hfound=FindFirstFile(fpath,&wfd))!=INVALID_HANDLE_VALUE) { if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,".")) { strcpy(newpath,path); strcat(newpath,"\\"); strcat(newpath,wfd.cFileName); FindDir(newpath,mask); } while(FindNextFile(hfound,&wfd)) { if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,".")) { strcpy(newpath,path); strcat(newpath,"\\"); strcat(newpath,wfd.cFileName); FindDir(newpath,mask); } } } }
вывод матрицы на форму помогите пожалуйста с выводом матрицы на форму... вот код самой программы: (это вывод просто на консольку) Code: /* Сформировать квадратную матрицу A(15,15) следующего вида: * 0 0 0 ... 0 1 * 0 0 0 ... 1 0 * ............. * 0 1 0 ... 0 0 * 1 0 0 ... 0 0 */ using System; namespace Task2 { class ArrayDemo { public static void Main(string[] args) { Console.Title = ""; Console.BackgroundColor = ConsoleColor.White;//цвет формы Console.ForegroundColor = ConsoleColor.Black;//цвет текста формы do { const uint N = 15; int[,] A = new int[N, N]; Console.Clear(); solution(A, N); write(A, N); Console.WriteLine(); Console.WriteLine("Нажмите Esc для выхода!"); } while (Console.ReadKey(true).Key != ConsoleKey.Escape); } static void solution(int[,] arr, uint l) { for (int i = 0; i < l; i++) for (int j = 0; j < l; j++) if (i + j == l - 1) arr[i, j] = 1; } static void write(int[,] arr, uint l) { for (int i = 0; i < l; i++,Console.WriteLine()) for (int j=0;j<l;j++) Console.Write(arr[i,j] + " "); } } } а вот программка,где я создаю формочку... Code: using System; using System.Windows.Forms; using System.Drawing; class ButtonForm : Form { Button MyButton; Button StopButton; Label lblOutput; public ButtonForm() { Text = "Кнопочки"; lblOutput =new Label(); MyButton = new Button(); MyButton.Text = "Start"; MyButton.Location = new Point(100, 200); StopButton = new Button(); StopButton.Text = "Exit"; StopButton.Location = new Point(200, 200); //добавляем в список обработчик событий кнопки. MyButton.Click += new EventHandler(MyButtonClick); Controls.Add(MyButton); StopButton.Click += new EventHandler(StopButtonClick); Controls.Add(StopButton); } [STAThread] public static void Main() { ButtonForm skel = new ButtonForm(); Application.Run(skel); } //обработчик для кнопки MyButton. protected void MyButtonClick(object who, EventArgs e) { lblOutput.Location = new Point(20, 40); lblOutput.Size = new Size(216, 24); lblOutput.Text = "1 2 3 4 5\n1 2 3 4 5\n"; lblOutput.Location = new Point(40, 40); Controls.Add(lblOutput); } //обработчик событий для кнопки StopButton. protected void StopButtonClick(object who, EventArgs e) { //если пользователь ответит щелчком на кнопке Yes, //программа будет завершена. DialogResult result = MessageBox.Show("Остановить программу?", "Завершение", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) Application.Exit(); } } вопрос в том,как вывести матрицу из первого кода на форму из второго??? с помощью Label.Text не получается=((помогите пожалуйста.. П.С.прога делается в C#
У меня следующий вопрос по С: у меня есть переменная as типа char. мне нужно, чтобы прога сделала а=float(as), то есть перевела эту строку в вещественное число. В книге нашёл такую функцию как strtod, но в ней нужно указывать саму строку(это понятно) и символ, на котором строка заканчивается Это какой же мне нужно нописать там символ, если у меня в строке ничего кроме этого числа нет? Вот код проги, на всякий случай, может поможет =): Code: # include <stdio.h> # include <string.h> # include <stdlib.h> int main() { int stop, i; float A[1024], B[1024], a; char end[]="END", as[30]; i=1; stop=0; while (stop=0) { printf("\nEnter a, please:\n"); gets(as); if (strcmp(as, end)==0) { stop=1; } else { a=strtod(as, ); A[i-1]=a; i=i+1; printf() } }
http://www.cplusplus.com/reference/clibrary/cstdlib/strtod.html вот пример оттуда: PHP: /* strtod example */ #include <stdio.h> #include <stdlib.h> int main () { char szOrbits[] = "365.26 27.32"; char * pEnd; double d1, d2; d1 = strtod (szOrbits,&pEnd); d2 = strtod (pEnd,NULL); printf ("The moon completes %.2lf orbits per Earth year.\n", d1/d2); return 0; }
не надо функций для перевода в вещественное Code: #include <stdio.h> int main(void) { int x = 6; float y; scanf("%f",&y); printf("%f",y); return 0; }
Чё то вот здесь я совсем не пойму во-первых зачем нужно вводить х=6 ? и во-вторых мне нельзя сразу делать переменную типа float, так как с клавы можно ввести и слово и тогда прога вылетает с ошибкой
Думаю, вот решение: Code: #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int i = 0; char as[30]; double A[1024]; while(1) { printf("\nEnter a, please:\n"); gets(as); if (!strcmp(as, "END")) break; A[i++] = strtod(as, NULL); } printf("Result values:\n"); for(int j = 0; j < i; j++) printf("%f\t", A[j]); } Вот пример обработки: Code: Enter a, please: 123 Enter a, please: asdfg Enter a, please: 456 Enter a, please: END Result values: 123.000000 0.000000 456.000000
>>кто знает, как загрузить файл с url на диск? код нужен очень на C/C++ 1 функция http://msdn.microsoft.com/en-us/library/ms775123(VS.85).aspx
помогите найти где я втыканул в коде... есть функция RUN которая берет значение, полученное с листбокса диалога, передает его в подключаемую DLL библиотеку, которая должна приплюсовать к этому значению 3 и вернуть в RUN результат. Потом функция RUN выводит результат не экран. вот что накодил... Code: void CMyFrameWin::OnRun() { [B][COLOR=DarkOrange]/* char s[80]; // проверка доходит ли Number до передачи в DLL CClientDC dc(this); // проверка доходит ли Number до передачи в DLL wsprintf(s,"Number is %d",Number); // проверка доходит ли Number до передачи в DLL dc.TextOut(100,200,s); // проверка доходит ли Number до передачи в DLL */[/COLOR][/B] int res; HINSTANCE hDll; char s[100]; hDll=::LoadLibrary("MyDll"); typedef int (*FUN)(int); FUN func; func=(FUN)::GetProcAddress(hDll, "calc"); res=(*func)(Number); sprintf(s,"%f", res); MessageBox(s,"Result"); //создание и запись результата в файл FILE *result; result=fopen("result.txt","w"); fprintf(result,"%f",res); fclose(result); } значение Number в функцию RUN доходит нормально (проверка выводом на экран без использования DLL) собственно сам код DLL библиотеки: MyDll Code: #include "stdafx.h" #include <conio.h> int calc(int Number) { int r=Number; int res; res=r+3; return res; } и код файлика MyDll.def Code: LIBRARY "MyDll" DESCRIPTION 'This library has one function' EXPORTS calc @1 независимо от того какое значение Number получает функция RUN от листбокса диалога (а получает постоянно точно то же что я выбрал в диалоге, я проверял без подключения DLL простым выводом) получаем постоянно в результате НОЛЬ... я уже хз где я мог втыкануть.... может тому кто долго не втыкал этот бред на свежую голову все покажется просто и укажет на траблу.. Заранее спасибо за любой ответ.
Доброго времени суток, появилась такая проблемка c алгоритмом Хаффмана: Имеется массив содержащий набор двоичныч кодов ( пр. char a[3][3] = {{'0','0','0'},{'1','0','1'},{'1','1','1'}}; ) для букв a, b, c. Как в файле поменять каждую a, b и c на ее двоичный код? Совсем чего-то запутался, ведь нет же переменных, которые хранят двоичный код? А с этим чаром что так 8 байт что так =(
если я тебя правильно понял то те нужно открыть файл и читать посимвольно. если встречается тот символ что нужен то заменить на код.. почему бы не использовать код из 3-х цифр как строку? а сделать поиск по файлу и использовать замену строк (типа как replacestr() )...