Ricerca in Array di char in C

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

Avatar utente
Foto Utenteclaudiocedrone
21,3k 4 7 9
Master EY
Master EY
Messaggi: 15322
Iscritto il: 18 gen 2012, 12:36

Messaggioda Foto Utenteclaudiocedrone » 12 dic 2023, 21:29

L'unica osservazione è che, se non vado errato, il titolo modificato a posteriori (ovvero non prima della pubblicazione del secondo post) apparirà solo nei post ma il titolo del thread rimane invariato.
"Non farei mai parte di un club che accettasse la mia iscrizione" (G. Marx)

Avatar utente
Foto Utenteandre29
68 1 2 7
Frequentatore
Frequentatore
Messaggi: 267
Iscritto il: 26 apr 2015, 9:57

Messaggioda Foto Utenteandre29 » 13 dic 2023, 9:55

GioArca67 ha scritto:Mi sembra opportuno modificare il titolo in qualcosa tipo
"Ricerca in Array di char in C"
affinché sia più comprensibile
osservazioni?


Si, ho provato ma non ci sono riuscito. Non so se qualche moderatore può farlo.

Avatar utente
Foto Utenteandre29
68 1 2 7
Frequentatore
Frequentatore
Messaggi: 267
Iscritto il: 26 apr 2015, 9:57

Messaggioda Foto Utenteandre29 » 13 dic 2023, 10:41

Allora ho fatto qualche prova, e sembra funzioni:
L'obbiettivo è stampare Testo2.

Codice: Seleziona tutto

char RXbuffer [30]="prova,$,testo_1,Testo2";
char timestep[7];
void get_timestep (char RXbuffer[]);


Codice: Seleziona tutto

int main() {
   get_timestep(&RXbuffer[0]); // dovrebbe essere l'indirizzo
    printf(timestep);

   return 0;
}



Codice: Seleziona tutto

void get_timestep (char *){
   int i,n=0;
   bool v=false;
 
   for (i=0;i<DIM_BUFFER;i++) {
         if (RXbuffer[i]='$')  {
               i=i+6;
                  for (n=0;n<7;n++) {
                 i++;
                    timestep[n]=RXbuffer[i];
                    printf("\n");
                     }
                  break;
            }
   }
}


Quello che a me interessa capire non è tanto il come fare il ciclo for, ma è cosa e come gli devo dare alla funzione, cioè l'indirizzo.

Avatar utente
Foto Utenteandre29
68 1 2 7
Frequentatore
Frequentatore
Messaggi: 267
Iscritto il: 26 apr 2015, 9:57

Messaggioda Foto Utenteandre29 » 13 dic 2023, 10:42

djnz ha scritto:tra l'altro, la condizione:

Codice: Seleziona tutto

RXbuffer[i]=="$"

dovrebbe essere:

Codice: Seleziona tutto

RXbuffer[i]=='$'

Poi, ma questo è solo "design", il buffer passato come argomento, mentre l'array del risultato acceduto come variabile globale?

Si potrebbe fare così (a memoria, non testato):

Codice: Seleziona tutto

#define DIM_BUFFER  100

char RXbuffer [DIM_BUFFER];
char array[7];

Codice: Seleziona tutto

bool get_array() {
    int i;
    for (i=0; i<(DIM_BUFFER-7); i++)
        if (RXbuffer[i] == '$')  {
            memcpy(array, RXbuffer+i+1, 7);
            return 1;
        }
    return 0;
}

Da usare con:

Codice: Seleziona tutto

if (get_array()) { ... }


Grazie, adesso provo questa soluzione

Avatar utente
Foto Utenteclaudiocedrone
21,3k 4 7 9
Master EY
Master EY
Messaggi: 15322
Iscritto il: 18 gen 2012, 12:36

Messaggioda Foto Utenteclaudiocedrone » 13 dic 2023, 11:04

Modificato il titolo ma che faticaccia, è toccato farlo per ogni singolo post :evil:
"Non farei mai parte di un club che accettasse la mia iscrizione" (G. Marx)

Avatar utente
Foto Utenteandre29
68 1 2 7
Frequentatore
Frequentatore
Messaggi: 267
Iscritto il: 26 apr 2015, 9:57

Messaggioda Foto Utenteandre29 » 13 dic 2023, 11:24

claudiocedrone ha scritto:Modificato il titolo ma che faticaccia, è toccato farlo per ogni singolo post :evil:

Colpa mia!!! :roll: Grazie :ok:

Avatar utente
Foto Utentemarkc
17 3
New entry
New entry
Messaggi: 89
Iscritto il: 15 lug 2024, 9:21

Messaggioda Foto Utentemarkc » 29 lug 2024, 18:13

andre29 ha scritto:Allora ho fatto qualche prova, e sembra funzioni:
L'obbiettivo è stampare Testo2.


Io userei la strtok()


Torna a “Firmware e programmazione”