Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C] problema stringa

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    11

    [C] problema stringa

    Ragazzi cosa c'è che non va in questo codice???
    non riesco proprio a capire come creare stringhe per gesitre questi benedetti caratteri usciti da i file di testo con comandi tipo fgetc,.. fgets e scanf.. quando uso uno l'altro?


    in questo programma ho un file con scritto "123456943"... uso questo codice per salvare questa sequenza in una stringa ma non funziona!!!! perchè? il printf mi da come risultato "1"....











    codice:
    #include <stdio.h>
    #include <string.h>
    
    
    
    int main (void) {
    
    FILE *f;
    
    f=fopen("ciao.txt", "r");
    
    int s1[15]={0};
    int i;
    int c;
    for (i=0; i<15; i++){
    c=fgetc(f);
    s1[i]=c;}
    printf ("la stringa is %s", s1);
    
    
    int x=0;
    int k=0;
    
    
    
    
    fclose(f);
    return 0;

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Questo succede perché stai tentando di stampare un array di int come fosse un array di char.
    Alla prima lettura c vale '1', ma siccome assegni s[0]='1', ed s[0] è un intero, i restanti byte dell' intero (il cui numero dipende dalla macchina) rimangono settati a zero.
    Ecco che viene stampato solo il primo carattere perché il byte successivo al carattere in cui è stato scritto '1' è uguale a zero, e viene interpretato come un terminatore.
    Quello che devi fare è cambiare la dichiarazione in un array di char, oltre ad aumentarne la dimensione a 16 per contenere il terminatore:

    codice:
    #include <stdio.h>
    #include <string.h>
    
    
    
    int main (void) {
    
    FILE *f;
    
    f=fopen("ciao.txt", "r");
    
    char s1[16]={0};
    int i;
    int c;
    for (i=0; i<15; i++){
    c=fgetc(f);
    s1[i]=c;}
    printf ("la stringa is %s", s1);
    
    
    int x=0;
    int k=0;
    
    
    
    
    fclose(f);
    return 0;

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 © 2024 vBulletin Solutions, Inc. All rights reserved.