Oppure

Loading
27/10/14 18:17
TheDarkJuster
Già quindi era sizeof(num) / sizeof(tipo_di_num) l'esempio su cplusplus era forviante......
aaa
27/10/14 18:48
pbe
Ho provato a realizzare dall'esempio a tutorialspoint.com/c_standard_library/… un programma che legge un valore (anche char), lo salva e lo stampa. Funziona in parte in quanto se inserisco per esempio "casa" stampa cHLUu: la prima lettera è sempre giusta ma poi aggiunge quei caratteri là... anche se inserisco solo "c" o anche coi numeri. Inoltre il salvataggio funziona ma con i caratteri descritti sopra...

Il codice modificato da me è:
#include <stdio.h>
#include <string.h>

int main()
{
   FILE *f;
   char c[] = "";
   char buffer[10];

   printf("Inserisci un valore: ");
   scanf("%s",c);
   
   /* Open file for both reading and writing */
   f = fopen("file.txt", "w+");

   /* Write data to the file */
   fwrite(c, strlen(c)+1, 1, f);

   /* Seek to the beginning of the file */
   fseek(f, SEEK_SET, 0);

   /* Read and display data */
   fread(buffer, strlen(c)+1, 1, f);
   printf("%s\n", buffer);
   fclose(f);
   
   return(0);
}


Qual è il problema?
Ultima modifica effettuata da pbe 27/10/14 18:49
aaa
27/10/14 19:02
Questo

char c[] = "";

significa che l'array c è vuoto.

E rimarrà vuoto. Non puoi utilizzarlo nella scanf perché scriverai in memoria sporcandola e ottenendo risultati imprevedibili. Il vettore deve avere una dimensione.
Ultima modifica effettuata da 27/10/14 19:03
27/10/14 21:02
TheDarkJuster
Nel fwrite hai invertiti il secondo e il terzo parametro, Pensaci bene e vai a vendere gli esempi precedenti
Ultima modifica effettuata da TheDarkJuster 27/10/14 21:03
aaa
27/10/14 21:04
TheDarkJuster
Doppio post
Ultima modifica effettuata da TheDarkJuster 27/10/14 21:27
aaa
27/10/14 21:32
L'espressione char c[] = ""; indica un array costituito da un solo elemento di tipo char, il che spiega perché quando "stampi" c ottieni sempre il primo carattere valido del tuo input (correttamente immagazzinato nell'array) seguito da una serie di dati "sporchi". Ti va già bene se "scrivendo" quei dati "sporchi" il programma non va in palla, perché potrebbe anche succedere perché scrive chissà cosa chissà dove.
27/10/14 22:01
pbe
Postato originariamente da AldoBaldo:

L'espressione char c[] = ""; indica un array costituito da un solo elemento di tipo char, il che spiega perché quando "stampi" c ottieni sempre il primo carattere valido del tuo input (correttamente immagazzinato nell'array) seguito da una serie di dati "sporchi". Ti va già bene se "scrivendo" quei dati "sporchi" il programma non va in palla, perché potrebbe anche succedere perché scrive chissà cosa chissà dove.


Quindi cosa posso fare?
aaa
27/10/14 22:03
pbe
Postato originariamente da TheDarkJuster:

Nel fwrite hai invertiti il secondo e il terzo parametro, Pensaci bene e vai a vendere gli esempi precedenti


Il risultato non cambia se li inverto.
aaa