|
|||||||
|
|
|
![]() |
|
|
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: 8897
|
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: 8897
|
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: 11:14.


















