Prima di proseguire...
Potrebbe interessarti la nostra collezione di esercizi C risolti?
Vediamo oggi come creare una semplice chat da terminale.
ATTENZIONE : il programma è progettato per linux o altri sistemi POSIX
in pratica il programma consiste in una semplice copia del testo in input in un altro terminale con varie formattazioni(come ad esempio l’inseriemtno del nome al testo della chat).
Il codice è il seguente:
#include<stdio.h> #include<string.h> int main(int argc, char *argv[]){ int c,i; char buffer[1000],*punt = buffer; while((c=getchar())!=EOF){ *(punt++) = 10; for(i=0;i<strlen(argv[1]);i++) *(punt++) = argv[1][i]; *(punt++) = ' '; *(punt++) = ':'; *(punt++) = ' '; *(punt++) = c; while((c=getchar())!=10) *(punt++) = c; *(punt++) = '\0'; punt = buffer; printf("%s\n",buffer); } }
In pratica mi creo un array di caratteri di grandezza 1000 nel quale andrò a memolrizzare la stringa da stampare ed un puntatore che punta ad buffer il quale ogni volta che devo scrivere su buffer incremento : char buffer[1000],*punt = buffer;
In seguito inizio a leggere cartttere pe rcarttere fin quando non trovo il caratteri di fine input(EOF) : while((c=getchar())!=EOF){
a buffer aggiungo un newline, il nome fornito come parametro del main uno spazio, i due punti, un’altro pssazio, tutto cio che viene scritto prima del newline ed un null(\0):
*(punt++) = 10;
for(i=0;i
*(punt++) = argv[1][i];
*(punt++) = ‘ ‘;
*(punt++) = ‘:’;
*(punt++) = ‘ ‘;
*(punt++) = c;
while((c=getchar())!=10)
*(punt++) = c;
*(punt++) = ‘\0’;
in seguito faccio putare punt all’inizio della stringa buffer ed stampo buffer:
punt = buffer;
printf(“%s\n”,buffer);
per far andare il programma nei due terminali bisogna accedere con lo stesso utente e bisogna sapere il numero di terminale, per saperlo basta usare il programma ps che dice i processi avviati dla terminlae tra cui ps stesso e dice anche il nome del terminale (e pts/…).
per avvaire il programma scrivere ./nome_del_programma nome_utente_chat >/dev/pts/…
l’uso di questo programma è consigliabile tramite connessioni telnet ad un pc che funge da server.
P.S. volendo si puà aggiungere anche il bell(\a) per sentire il suono in locale quando arriva un messaggio
chat da terminale by cardinale claudio is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.