PDA

Visualizza la versione completa : [C] - called object ‘-0x00000000000000001’ is not a function


ginter87
12-04-2010, 19:57
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/showthread.php?s=&threadid=1397017

il mio codice ่ il seguente



#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]);
}

oregon
12-04-2010, 20:08
Il problema ่ la

EOF

che non ่ una funzione ... (forse volevi usare feof ? )

shodan
12-04-2010, 20:11
C'่ anche:


if(fd==NULL); // ; di troppo

oregon
12-04-2010, 20:12
Anche questo

if(car=='_');

e due volte ...

MItaly
12-04-2010, 20:26
0x0000000000000001
Che brutti gli indirizzi a 64 bit... ci vorrเ un po' per abituarcisi... :(

oregon
12-04-2010, 20:30
Veramente ่ una costante ... ma ่ sempre brutta ... :)

MItaly
12-04-2010, 20:39
Giusto. :mem:

ginter87
12-04-2010, 21:09
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?

oregon
12-04-2010, 21:12
Dopo la scanf inserisci una

fflush(stdin);

ginter87
12-04-2010, 22:10
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

Loading