|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2006
Città: Torino
Messaggi: 1644
|
[C] confrontare stringhe e parole in un file
Ho un problema.
Ho un file che è strutturato in questo modo: ciao;casa gaia;topino pappa;ciccia ecc;ecc e ho anche 2 stringhe salvate in 2 variabili distinte. quello che devo fare è ad esempio confrontare se la stringa 1 è uguale a ciao e la stringa 2 a casa. oppure la prima stringa a pappa e la seconda a ciccio. praticamente è come se le due stringhe che ho già salvato siano username e password e se queste due parole sono presenti nel file separate da una virgola l'utente è autenticato a fare qualcosa. come faccio? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
allora devi fare un parser del file ... ti basta inizialmente tirare su pappa;ciccia esempio poi fai una divisione della stringa e li confronti ... ci dovrebbe essere se non erro già qualche funzione nelle librerie string.h che fanno la divisione ... token qualcosa si dovrebbe chiamare ... altrimenti ti ricerchi te dove è messo il ;
Per il confronto usa strcmp ovviamente assicurati che esista il terminatore di stringa. ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Codice:
STRTOK(3) Linux Programmer's Manual STRTOK(3) NAME strtok, strtok_r - extract tokens from strings
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2006
Città: Torino
Messaggi: 1644
|
mmm, non ho capito molto...
per prima cosa devo caricare il file, poi come faccio a confrontare la prima riga con le due stringhe? ciascuna riga termina con \n ovviamente |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2006
Città: Torino
Messaggi: 1644
|
come faccio a leggere dal file una riga per volta?
poi quella riga la salvo in un buffer e poi la divido, giusto? potreste scrivermi qualche riga di codice per farmi capire? |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Prova con questo:
Codice:
#define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> int main() { char * Token; char * Stringa; char * Line; int Length; FILE * File; File = fopen("prova.txt", "r"); getline(&Line, &Length, File); for (Stringa = strtok(Line, ";"); Stringa != NULL; Token = strtok(NULL, ";")) { printf("Stringa: %s.\n", strndup(Stringa, (size_t)(Token-Stringa))); Stringa = Token; } fclose(File); return 0; }
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
#include <stdio.h> #include <string.h> int main (void) { char buffer[64]; char *stringa1, *stringa2; FILE *f; if ((f = fopen ("file.txt", "r")) != NULL) { while (fgets (buffer, sizeof (buffer), f) != NULL) { if ((stringa1 = strtok (buffer, ";")) != NULL && (stringa2 = strtok (NULL, ";\n")) != NULL) { printf ("stringa1=%s stringa2=%s\n", stringa1, stringa2); /* Fai i test che vuoi con stringa1/stringa2 */ } } fclose (f); } return 0; }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Feb 2006
Città: Torino
Messaggi: 1644
|
ok, grazie a tutti ho risolto!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:52.