Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [c] salvare tot caretteri stringa

    Salve vorrei sapere come risolvere un problema in C. Ho un file di testo con parecchie righe e vorrei di ogni riga prendere solo i primi 12 caratteri e salvarli in un altro file. Ora il salvataggio e la lettura dei primi 12 caratteri non è un problema ciò che non riesco a fare e a far andare a capo la funzione dopo i primi 12 caratteri e quindi a far riprendere i 12 caretteri della 2 riga e non, come capita a me, a far prendere i successiva 12 caratteri nella stessa riga. Per prendere i prima 12 caratteri uso la funzione fgets(nome, 13, fp) dove nome è un vettore dove viene salvata la stringa con 12 caratteri e fp il puntatore a file ma come faccio a farlo andare a capo???

    Grazie e scusate la lunghezza ma era necessaria per far capire bene.

    Ciao

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    La funzione fgets smette di leggere caratteri quando incontra il carattere di fine linea; quindi potresti specificare un numero maggiore di caratteri al posto di 13, in modo che la funzione legga tutta la riga; poi ti ricavi i soli 12 caratteri iniziali della stringa ottenuta come risultato. Se ad esempio sai che le linee non sono mai piu lunghe di 100 caratteri potresti specificare 101.


  3. #3
    La tua teoria è giusta ma come faccio a ricavare i soli primi 12 caratteri?

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Ti puoi fare tu una piccola funzioncina che preleva i soli primi 12 caratteri , oppure puoi utilizzare una funzione di libreria già pronta:

    char *strncpy( char *to, const char *from, size_t count );

    questa funzione copia in to i primi size_t caratteri della stringa from. Il puntatore to deve essere o un array di char o un puntatore a char che deve essere stato allocato in modo da contenere almeno size_t + 1 caratteri (tenendo conto del carattere di fine stringa, che devi esplicitamente aiunere!). Quindi, se tu vuoi allocarci i primi 12 caratteri di ogni riga puoi fare:

    char nome[100];
    ....
    ....
    //ricavi una riga
    fgets(nome, 100, fp);


    char to[13];
    //ricavi i primi 12 caratteri
    strncpy( char *to, const char *from, size_t count );
    //metti il carattere di fine stringa
    to[12] = '\0';

    a questo punto to contiene i primi 12 caratteri della stringa originaria.


    Per conoscsere tutte le funzioni disponibili in c/c++:

    http://www.cplusplus.com/ref/
    http://www.cppreference.com/


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.