Ciao, ho un problema nel capire una parte di questo codice.
Mi hanno spiegato che
if(strcmp(temp,"_")==0)
sta ad indicare che temp "punta" alla fine di un messaggio. Volevo sapere perchè per indicare la fine di un messaggio si è scritto questo codice.
Grazie
codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#define DIMENSIONE 2560
#define TAGLIA_OBJ 56
#define TAGLIA_TXT 200
#define NUM_MAX_MSG (DIMENSIONE/TAGLIA_OBJ + TAGLIA_TXT)
typedef struct {
int tipo;
int memoria;
int semaforo;
} boot;
typedef struct {
char obj[TAGLIA_OBJ];
char txt[TAGLIA_TXT];
} message;
message messaggio;
void errore(char* temp){
printf("%s",temp);
exit(-1);
}
void printMenu() {
printf("==================================================\n");
printf(" BACHECA ELETTRONICA VOLATILE \n");
printf("==================================================\n");
printf("A. Leggi tutti i messaggi nella bacheca;\n");
printf("B. Leggi un messaggio in bacheca;\n");
printf("C. Inserisci un messaggio in bacheca;\n");
printf("D. Rimuovi un messaggio dalla bacheca;\n");
printf("Q. Esci dal programma;\n");
printf("--------------------------------------------------\n");
printf("Immetti la tua scelta: ");
}
void readMessages(int ds_shm){
char* temp;
int cont =1;
temp = shmat(ds_shm, NULL, SHM_R);
if(temp == (char*) -1){
printf("Errore nella call shmat\n");
exit(-1);
}
while(strcmp(temp,"")!=0){
if(strcmp(temp,"_")==0){
temp += TAGLIA_OBJ + TAGLIA_TXT;
cont++;
}
else{
printf("Codice del messaggio: %d\n", cont);
printf("Oggetto: %s\n", temp);
temp+=TAGLIA_OBJ;
printf("Testo: %s\n", temp);
printf("--------------------------------------------------\n");
temp += TAGLIA_TXT;
cont++;
}
}
}