Crittografia RSA non compila

Stavo provando a fare questo problema e quando invio la sottoposizione mi da questo errore: collect2: error: ld returned 1 exit status però se invece lo compilo con dev c++ non mi da nessun problema e non capisco il perchè

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>


static FILE *fr, *fw;

// Declaring variables
static int N;
static int d;
static int L;
static int* messaggio;
char* plaintext;

// Declaring functions
int powe(int a,int b){
	int ia = a;
	for(int i = 0;i<b-1;i++){
		a=a*ia;
	}
	return a;
}


void decifra(int N, int d, int L, int* messaggio, char* plaintext){
	for(int i = 0;i<L;i++){
		plaintext[i] = powe(messaggio[i],d)%N;
	}
	plaintext[L] = '\0';
}

int main() {
	fr = stdin;
	fw = stdout;

	// Iterators used in for loops
	int i0;

	// Reading input
        fscanf(fr, "%d %d %d", &N, &d, &L);
	messaggio = (int*)malloc(100 * sizeof(int));
	plaintext = (char*)malloc(110 * sizeof(char));
	for (i0 = 0; i0 < L; i0++)
            fscanf(fr, "%d", &messaggio[i0]);

	// Calling functions
	decifra(N, d, L, messaggio, plaintext);

	// Writing output
        fprintf(fw, "%s\n", plaintext);
	
	fclose(fr);
	fclose(fw);
	return 0;
}

Questo è uno dei problemi con il grader, quindi prova ad inviare solo la funzione senza il main