Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    20

    [C] - called object ‘-0x00000000000000001’ is not a function

    Questo errore che sta nel titolo di questo post mi appare quando compilo il mio codice riguardante i cifrari monoalfabetici

    ho scritto cosa devo fare qui http://forum.html.it/forum/showthrea...readid=1397017

    il mio codice è il seguente

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX 1024
    
      void cifra();
      void decifra();
      void open_file();
      char alfa[]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
      char ct[MAX], plain[MAX], key[26], path[50], car;
      int i, j, k, max, risp, n;
      FILE *fd;
    
    
    
    main()
    {
      printf("\n cosa vuoi fare?? 1. Cifra - 2. Decifra\n");
      scanf("%d",&risp);
      open_file();
      switch(risp)
      {
    	case 1: cifra(); break;
    	case 2: decifra(); break;
    	default: printf("\n hai inserito un valore non valido!"); exit(1);
      }
      return 0;
    }
    
    void open_file()
    {
    	printf("inserisci chiave:\t");
    	gets(key);
    	printf("inserisci path del file:\t");
    	gets(path);
    	fd=fopen(path,"rw");
    	if(fd==NULL);
    	{
    		perror("\nErrore nell'apertura del file");
    		exit(1);
    	}
    }
    
    void cifra()
    {
    	if(!EOF(fd))
    	{
    		n=fgetc(fd);
    		i++;
    	}
    	max=i;
    	for(i=0;i<max;i++)
    	{
    		for(k=0;k<26;k++)
    		{
    			fscanf(fd,"%c",&car);
    			if(car==alfa[k])
    			{
    			j=i;
    			ct[i]=key[j];
    			}
    			if(car==' ');
    				ct[i]='_';
    		}
    	}
    	for(i=0;i<max;i++)
    		printf("%c",ct[i]);
    }
    			
    void decifra()
    {
    	if(!EOF(fd))
    	{
    		n=fgetc(fd);
    		i++;
    	}
    	max=i;
    	for(i=0;i<max;i++)
    	{
    		for(k=0;k<26;k++)
    		{
    			fscanf(fd, "%c",&car);
    			if(car==key[j])
    			{
    			k=j;
    			plain[i]=alfa[k];
    			}
    			if(car=='_');
    				ct[i]=' ';
    		}
    	}
    	for(i=0;i<max;i++)
    		printf("%c",plain[i]);
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Il problema è la

    EOF

    che non è una funzione ... (forse volevi usare feof ? )
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    C'è anche:
    codice:
    if(fd==NULL); // ; di troppo
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Anche questo

    if(car=='_');

    e due volte ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    [OT]
    0x0000000000000001
    Che brutti gli indirizzi a 64 bit... ci vorrà un po' per abituarcisi...
    [/OT]
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Veramente è una costante ... ma è sempre brutta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Giusto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    20
    grazie!!!
    funziona tutto anche se adesso ho un problema con la key ... non me la fa inserire quando eseguo il programma
    salta l'inserimento della key e mi fa inserire il path solo che senza la key non cifra nulla!!

    Provo inoltre a dichiarare key come l'alkfabeto ... quindi senza inserimento da tastiera ma ... apre il file ... e non fa ne la funziona cifra, ne decifra. perche?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Dopo la scanf inserisci una

    fflush(stdin);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    20
    Originariamente inviato da oregon
    Dopo la scanf inserisci una

    fflush(stdin);
    Mi spieghi come mai succede questo? Comunque niente, lo fa ugualmente ... non arriva a crittografare. L'ho modificato ... si ferma dopo l'apertura del file SE apre questo file ... perche a questo punto non ne sono sicura.
    Tra l'altro lo switch case non funziona perche se inserisco un carattere dovrebbe darmi la printf che sta in default invece ... non mi da nulla, anzi mi salta la richiesta della key e mi chiede il path O_________o

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.