Code: #include <stdio.h> #define FILE_NAME "a.txt" struct params{ char aaa[100]; char bbb[100]; char ccc[100]; }; int main(){ struct params data[100]; char line[200]; int v = 0; FILE *fp = fopen(FILE_NAME, "r"); while ( fgets ( line, sizeof line, fp ) != NULL ){ sscanf(line, "%s %d %d", &data[v].aaa, &data[v].bbb, &data[v].ccc); printf("%s", line); v++; } printf("\n"); } Можно так. Там уж поправь как тебе надо.
Function should return a value Code: #include <stdio.h> #define FILE_NAME "file.txt" struct oxota { char prizvishe[256]; int vpol; int vaga;}; int main () { struct oxota data[200]; char line[200]; int v=0; FILE*fp=fopen(FILE_NAME, "r"); while (fgets(line, sizeof line, fp)!=NULL) { sscanf(line, "%s %i %i", &data[v].prizvishe, &data[v].vpol, &data[v].vaga); printf("%s", line); v++; } printf("\n"); }
>Dev C++ - самый корректный компилятор Dev-c++ это среда разработки, использующая компилятор mingw PS "sizeof line" -------> "sizeof(line)"
ты переполнил массив, объявленный локально. у тебя всего 3 их. char prizvishe[256]; struct oxota data[200]; char line[200]; вот и отлаживай ищи, куда ты сунул больше, чем выделил памяти.
Code: #include <stdio.h> #include <dos.h> int main(void) { struct time t; gettime(&t); printf("The current time is: %2d:%02d:%02d.%02d\n", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); return 0; }
У меня проблема хочу авторизоваться на сайте вконтакте средствами С++. Отловив я все запросы что посылает мой браузер, и посылая их же в коде, в ответе получаю "400 bad reqest". Вот код. Code: #include <stdio.h> #include <string.h> #include <winsock2.h> #include <windows.h> #include <ctype.h> #define PORT 80 #define SERVERADDR "93.186.225.212" // Адрес сервера #pragma comment(lib, "Ws2_32.lib") //либа int main ( int argc, char* argv [ ] ) { WSADATA wd; char buff[100000]; char buff2[100000]= { "POST /login.php HTTP/1.1" "Host: vkontakte.ru" "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9) Gecko/2008051206 Firefox/3.0 (.NET CLR 3.5.30729)" "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" "Accept-Language: ru,en-us;q=0.7,en;q=0.3" "Accept-Encoding: gzip,deflate" "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7" "Keep-Alive: 300" "Connection: keep-alive" "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" "X-Requested-With: XMLHttpRequest" "Referer: http://vkontakte.ru/index.php" "Content-Length: 71" "Cookie: remixchk=5; remixautobookmark=2; remixlang=0" "Pragma: no-cache" "Cache-Control: no-cache" "op=a_login_attempt&email=e-mail&pass=pass&expire=0" }; printf ( "TCP Client \n" ); // ну, тут и так понятно if ( WSAStartup ( 0x202, &wd ) ) { printf ( " WSAStart error %d \n ", WSAGetLastError ( ) ); return -1; } SOCKET sock ; sock=socket ( AF_INET, SOCK_STREAM, 0 ); if ( sock < 0 ) { printf (" Socket ( ) error %d \n ", WSAGetLastError ( ) ); return -1; } sockaddr_in dest_addr; dest_addr.sin_family=AF_INET; //инет коннектинг dest_addr.sin_port=htons ( PORT ); //порт HOSTENT *hst; // хост if( inet_addr(SERVERADDR) != INADDR_NONE ) dest_addr.sin_addr.S_un.S_addr = inet_addr(SERVERADDR); else if( hst=gethostbyname ( SERVERADDR ) ) ( ( unsigned long * ) &dest_addr.sin_addr )[0]=((unsigned long** )hst->h_addr_list)[0][0]; else { printf( "invalid address %s \n", SERVERADDR ); closesocket( sock ) ; WSACleanup(); return -1; } if(connect( sock, (sockaddr *)&dest_addr, sizeof(dest_addr) )) { printf (" Connect error %d \n ", WSAGetLastError ( ) ); return -1; } send( sock, buff2, sizeof(buff2), 0); recv( sock, buff, sizeof(buff)-1, 0 ); printf("%s",buff ); printf("\n"); printf ("Connection with %s succesfully. quit - quit" , SERVERADDR ); return 0; }
ну зависит от деталей реадизации. если нада быстрый поиск, то все строки предварительно считываются, и составляется массив ключей вида struct Record {string name; unsigned long offset; unsigned int length;}; в массиве есесно отсортировано по смещению строки. дальше в массиве находишь нужное имя, берешь смещение и длину. вычисляешь размер части файла, которая лежит за этим куском кодом типа tail_length = file_size - (record.offset + record.length); ну и переписываешь этот хвостик по смещению, на котором находилась старая запись. в конце устанавливаешь размер файла как file_size - record.length; усе. если массив таких структур нельзя заводить, то соотв всю инфу нужно каждый раз получать из файла. т.е. считывать строки, искать нужный ключ, итп. лень кодить, ибо стока раз уже эту фигню делал студентам, что тошнит от нее