[C] "errore" collect2 dal compilatore

di il
4 risposte

[C] "errore" collect2 dal compilatore

Salve a tutti,

come esercizio sto creando un semplice algoritmo che inverte e manda in output una stringa di caratteri..cioè se la mia stringa in input è CANE l'output sarà ENAC.

Come mia abitudine compilo l'algoritmo ad ogni istruzione più o meno grande che scrivo in cerca di errori. Compilavo correttamente fino a quando implemento la funzione dell'inversione quando il compilatore di da quest'errore:
/tmp/ccz5xOYk.o: nella funzione "main":
es3.2.c:(.text+0x18b): riferimento non definito a "inverti"
collect2: error: ld returned 1 exit status
Ho letto in giro che di solito quando compare questo errore devo mettere dei parametri al comando di compilazione che palesemente non conosco dato che io (come sempre fatto) non uso altro che 'gcc file.c'.

Qualcuno sa come posso risolvere, per ora e se/quando mi si potrebbe ripresentare l'errore?

Grazie anticipatamente per l'aiuto.

4 Risposte

  • Re: [C] "errore" collect2 dal compilatore

    Il codice?
  • Re: [C] "errore" collect2 dal compilatore

    #include <stdio.h>
    #include <stdlib.h>
    
    char inverti(char vett1[], char vett2[]/*, int i, int j , int n*/);
    
    int main(){
    
    	int n=0, i, j;
    
    	puts("Quanto deve essere lunga la sequenza?");
    
    	scanf("%d", &n);
    	if (n < 1){
    	printf("ERRORE: sequenza minore di 1!\n");
    	return; 
    	}
    	
    	char a[n], b[n];
    
    	printf("Inserisci la sequenza: \n");
    
    	for (i=0; i <= n; i++)
    		scanf("%c", &a[n]);
    
    	for(i=0; i <= n; i++){
    		for(j=0; j <=n; j++)
    			b[j]=a[i];
    	}
    
    	inverti(a, b);
    
    
    	//[...]
    Questo è il codice che sto riscrivendo al momento da capo cambiando cose, il risultato è sempre lo stesso, appena inserisco la riga della funzione mi da l'errore nonostante fino a quel momento compili senza problemi.

    EDIT: C'è un palese errore di distrazione e copia/incolla: nel secondo scanf..non è scanf("%c", &a[n]), ma scanf("%c", &a)
  • Re: [C] "errore" collect2 dal compilatore

    Posta anche la funzione inverti, ovvero posta tutto il codice!
  • Re: [C] "errore" collect2 dal compilatore

    Non mi trovo a casa in questo momento, ho riscritto il codice da capo includendo ogni singolo pezzo e rimuovendo tutti i commenti e i pezzi di codice tra di essi e l'errore non compare più. Resta il fatto che non riesco a far funzionare il programma e non so perché.

    Comunque non so da cosa sia dipeso l'errore, anche perché altre volte ho usato lo stesso sistema di programmazione e non mi è mai apparso.

    Se può esservi utile per un confronto o non so che, ecco l'ultima versione che son riuscito a scrivere e che non mi da più l'errore:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    char inverti(char vett1[], char vett2[], int i, int j , int n);
    
    int main(){
    
    	int n=0, i, j;
    
    	puts("Quanto deve essere lunga la sequenza?");
    
    	scanf("%d", &n);
    	if (n < 1){
    	printf("ERRORE: sequenza minore di 1!\n");
    	return -1; 
    	}
    	
    	char a[n], b[n];
    
    	printf("Inserisci la sequenza: \n");
    
    	for (i=0; i <= n; i++)
    		scanf("%c", &a[i]);
    
    	strcpy(b, a);
    
    	inverti(a, b, i , j, n);
    
    	for(j=0; j <= n; j++)
    		printf("%c", b[j]);
    
    
    }
    
    char inverti(char vett1[], char vett2[], int i, int j , int n){
    	
    	char v1[n], v2[n];
    
    	for(i=0; i <= n; i++){
    		for(j=n-1; j <= 0; j--)
    			v2[j]=v1[i];
    	}
    			
    	/*for(j=0; j <= n; j++)
    		printf("%c", v2[j]);
    		printf("\n");*/
    
    }
Devi accedere o registrarti per scrivere nel forum
4 risposte