int main(void) { char orig[LEN] = "transportation"; char * find; puts("\n"); puts(orig); find = string_in(orig, "port"); if (find) puts(find); else puts("Not found"); find = string_in(orig, "part"); if (find) puts(find); else puts("Not found"); puts("\n"); return 0; }
void search(char *bk_list[],char *bk_name,int n) { int i; for(i=0;i<n;i++) if (string_in(bk_list[i],bk_name)) printf("%s\n",bk_list[i]); }
int main(void) { const unsigned int SIZE = 128; char str1[SIZE]; char str2[SIZE]; char ch; do { puts("Input string1:"); __fpurge(stdin); fgets(str1, SIZE, stdin); str1[strlen(str1) - 1] = '\0'; puts("Input string2:"); __fpurge(stdin); fgets(str2, SIZE, stdin); str2[strlen(str2) - 1] = '\0'; if (NULL == string_in(str1, str2)) { puts("Not found!"); } else { puts("Found!"); } puts("Enter any key except q to go on."); __fpurge(stdin); ch = getchar(); } while (ch != 'q'); return 0; }
int main(void) { char longstr[21]; char shortstr[11]; char * res; char * string_in(char *, char *); puts("Enter long string(QUIT to quit): "); gets(longstr); puts("Enter short string: "); gets(shortstr); do { res = string_in(longstr, shortstr); if(res) printf("%s is in %s, index: %p, first_char: %c\n", shortstr, longstr, res, *res); else printf("%s is not in %s\n", shortstr, longstr); puts("Enter another long string: "); gets(longstr); puts("Enter another short string: "); gets(shortstr); }while(strcmp(longstr, "QUIT") && strcmp(longstr, "QUIT")); return 0; }
int main (void) { char s1[] = "Hello world and Python."; char s2[] = "Python"; char * index; index = string_in (s1, s2); printf ("ptr: %p\n", index); fputs (index, stdout); return 0; }
int variable_declaration(const char *line, char **name) { int specifiers = 0; char *token = NULL; while((token = get_token(&line))) { if(strcmp(token, "*") == 0) { free(token); continue; } else if(contains_string(declaration_specifiers, token)) { free(token); specifiers++; continue; } else if(string_in(token, "struct", "union", "enum", NULL)) { free(token); free(get_token(&line)); specifiers++; continue; } else if(is_identifier(token)) { if(!specifiers) break; char *next_token = get_token(&line); if(next_token == NULL) { /* first identifier, last token */ *name = token; return 1; } else if(strcmp(next_token, "=") == 0) { free(next_token); *name = token; return 1; } else { free(next_token); break; } } else { /* unrecognised */ break; } } if(token) free(token); return 0; }
int main(int argc,char* argv[]) { int i; int tmp; int ret; char c; char in_cmd[30]; void* buffer_recv; struct sockaddr_in tmp_addr; struct timeval timer,timer_copy; socklen_t addrlen; if(!argv[1] || !argv[2]) { printf("Indirizzo IP o porta del server non valida\n"); exit(-1); } socket_TCP = socket(AF_INET,SOCK_STREAM,0); if(socket_TCP == -1) { printf("Errore nella creazione del socket TCP\n"); exit(-1); } socket_UDP = socket(AF_INET,SOCK_DGRAM,0); if(socket_UDP == -1) { printf("Errore nella creazione del socket UDP\n"); exit(-1); } // inizializzazione variabili di stato _recv = 0; _send = 0; chiudi = 0; partita_avviata = 0; simbolo_scritto = 0; // inizializzazione timer timer.tv_sec = 60; timer.tv_usec = 0; // inizializzazione sockaddr_in server_addr if(atoi(argv[2])<1024 || atoi(argv[2])>65535) { printf("Porta del server non valida\n"); printf("Il client verrà terminato\n"); exit(-1); } memset(&server_addr,0,sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(atoi(argv[2])); ret = inet_pton(AF_INET,argv[1],&server_addr.sin_addr.s_addr); if(ret == -1) { printf("IP del server non valido\n"); printf("Il client verrà terminato\n"); exit(-1); } // connessione del socket TCP ret = connect(socket_TCP,(struct sockaddr*)&server_addr,sizeof(server_addr)); if(ret == -1) { printf("Impossibile contattare il server\n"); exit(-1); } printf("Connessione al server %s porta(%s) effettuata con successo\n",argv[1],argv[2]); // stampa del menù printf("\n\n"); gestisci_cmd_stdin("!help"); printf("\n"); // registrazione registra_nome(); registra_porta(); flush(stdin); printf("Registrazione effettuata con succcesso!\n\n"); // inizializzazione sockaddr_in my_addr my_addr.sin_family = AF_INET; my_addr.sin_port = htons(porta_udp); my_addr.sin_addr.s_addr = htonl(INADDR_ANY); // bind sul socket udp ret = bind(socket_UDP,(struct sockaddr*)&my_addr,sizeof(my_addr)); if(ret == -1) { printf("Errore nell'esecuzione della bind sul socket udp\n"); exit(-1); } // azzeramento fd_set FD_ZERO(&master_rd); FD_ZERO(&master_wr); // settaggio fd_set FD_SET(0,&master_rd); FD_SET(socket_TCP,&master_rd); fdmax = (socket_TCP > socket_UDP)? socket_TCP :socket_UDP; while(chiudi==0) { rdset = master_rd; wrset = master_wr; timer_copy = timer; c = (partita_avviata == 0)? '>' : '#'; if(simbolo_scritto == 0) { printf("%c ",c); simbolo_scritto = 1; } fflush(stdout); ret = select(fdmax+1,&rdset,&wrset,NULL,&timer_copy); if(ret == -1) { printf("Errore nell'esecuzione della select\n"); chiudi = 1; } if(ret==0 && partita_avviata==1) { printf("Giocatori inattivi\n"); printf("Chiusura partita con '%s'..\n",altro_giocatore_nome); partita_avviata = 0; simbolo_scritto = 0; free(altro_giocatore_nome); dim_dati_snd = sizeof(int); buffer_send = malloc(dim_dati_snd); *(int*)buffer_send = htonl(CMD_TIMER); FD_CLR(socket_UDP,&master_rd); FD_SET(socket_TCP,&master_wr); printf("Partita chiusa\n\n"); continue; } for( i=0; i<=fdmax; i++) { // settato un file descriptor in lettura if(FD_ISSET(i,&rdset)) { // stdin if(i == 0) { if(partita_avviata == 0) string_in("","> ",in_cmd,sizeof(in_cmd)); else string_in("","# ",in_cmd,sizeof(in_cmd)); gestisci_cmd_stdin(in_cmd); } // socket TCP if(i == socket_TCP) { if(_recv == 0) { ret = recv(socket_TCP,(void*)&tmp,HEADER,0); if(ret == -1) { printf("Errore nella ricezione della dimensione dei dati\n"); chiudi = 1; break; } if(ret == 0) { printf("Il server si e' disconnesso\n"); chiudi = 1; break; } dim_dati_rcv = ntohl(tmp); _recv = 1; } else { buffer_recv = malloc(dim_dati_rcv); ret = recv(socket_TCP,buffer_recv,dim_dati_rcv,0); if(ret == -1) { printf("Errore nella ricezione dei dati\n"); chiudi = 1; break; } if(ret == 0) { printf("Il server si e' disconnesso\n"); chiudi = 1; break; } gestisci_cmd_TCP(buffer_recv); _recv = 0; free(buffer_recv); } } if(i==socket_UDP) { buffer_recv = malloc(MSG_UDP); addrlen = sizeof(tmp_addr); ret = recvfrom(socket_UDP,buffer_recv,MSG_UDP,0,(struct sockaddr*)&tmp_addr,&addrlen); if(ret == -1) { printf("Errore nella ricezione dei dati sul socket UDP\n"); chiudi = 1; break; } // controllo sul mittente if(partita_avviata==1 && tmp_addr.sin_addr.s_addr==peer_addr.sin_addr.s_addr) { ret = gestisci_cmd_UDP(buffer_recv); if(ret == -1) { chiudi = 1; break; } } free(buffer_recv); } } // settato un file descriptor in scrittura if(FD_ISSET(i,&wrset)) { if(i == socket_TCP) { if(_send == 0) { ret = invia_header(socket_TCP,dim_dati_snd); if(ret == -1) { printf("Errore nell'invio della dimensione sul socket TCP\n"); chiudi = 1; break; } _send = 1; } else { ret = send(socket_TCP,buffer_send,dim_dati_snd,0); if(ret == -1) { printf("Errore nell'invio del comando al server sul socket TCP\n"); chiudi = 1; break; } _send = 0; free(buffer_send); FD_CLR(socket_TCP,&master_wr); } } //socket udp if(i == socket_UDP) { ret = sendto(socket_UDP,buffer_send_udp,MSG_UDP,0,(struct sockaddr*)&peer_addr,sizeof(peer_addr)); if(ret == -1) { printf("Errore nell'invio dei dati al peer sul socket UDP\n"); chiudi = 1; break; } free(buffer_send_udp); FD_CLR(socket_UDP,&master_wr); } } } } close(socket_TCP); close(socket_UDP); return 0; }