Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-04-2006, 10:04   #1
dj_ste
Senior Member
 
L'Avatar di dj_ste
 
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?
dj_ste è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 10:55   #2
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 11:14   #3
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 11:22   #4
dj_ste
Senior Member
 
L'Avatar di dj_ste
 
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
dj_ste è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 11:46   #5
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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:
Originariamente inviato da DanieleC88
Codice:
STRTOK(3)                  Linux Programmer's Manual                 STRTOK(3)

NAME
       strtok, strtok_r - extract tokens from strings
mi ricordavo giusto che esisteva


~§~ 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 12:21   #6
dj_ste
Senior Member
 
L'Avatar di dj_ste
 
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?
dj_ste è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 13:21   #7
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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;
}
Non l'ho provato, ma dovrebbe andare (spero).
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 14:02   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da DanieleC88
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;
}
Non l'ho provato, ma dovrebbe andare (spero).
La getline è esclusivamente una estensione presente su sistemi GNU. Non è portabile quindi.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 14:11   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da dj_ste
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?
Questo è un semplice esempio scritto in ANSI "C":
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%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 15:50   #10
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da andbin
La getline è esclusivamente una estensione presente su sistemi GNU. Non è portabile quindi.
Si, lo so, l'avevo buttato giù solo come esempio veloce, lui voleva vedere come usare strtok.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 19:20   #11
dj_ste
Senior Member
 
L'Avatar di dj_ste
 
Iscritto dal: Feb 2006
Città: Torino
Messaggi: 1644
ok, grazie a tutti ho risolto!
dj_ste è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Arriva Logitech MX Master 4, mouse super...
Storie di Brand racconta la nascita dell...
EFF lancia l'allarme: con Chat Control l...
Il nuovo tablet 'Pro' di HONOR punter&ag...
Trasferire una eSIM TIM sul nuovo iPhone...
Torna il super notebook Lenovo con Core ...
MacBook Pro: prima un refresh e poi il s...
Mondaic, il software nato per Marte che ...
SpaceX annuncia l'undicesimo volo del ra...
CMF lancia le sue prime cuffie over-ear:...
Condannata a Londra la protagonista dell...
Addio Amazon? ChatGPT ora ti fa comprare...
YouTube chiude la causa con Trump: accor...
Avio: contratto da 40 milioni di € da ES...
Claude Sonnet 4.5, il nuovo modello di A...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v