Domanda Array dinamici e struct

Stato
Discussione chiusa ad ulteriori risposte.

march08

Utente Bronze
25 Ottobre 2016
18
8
2
36
Ultima modifica da un moderatore:
C:
#include<stdio.h>
#include <stdlib.h>

 struct vector{
  char *a;
  int c; //capacita
  int n; //elementi
 };
typedef struct vector vector;   //creo il tipo vettore

vector NewVector();          //definisco due funzioni crea nuovo vettore e inserisci in ultima posizione
vector inserisci(vector);


vector inserisci(vector v){
  char c;
 while(c=getchar()!='\n'){
  if( v.n<v.c+1){
   v.a[v.n]=c;
   v.n++;
  }
 else{ //raddioppia la dimensione del vettore
  char *b;
  int i=0;
  b=(char *)malloc(sizeof(char)*((v.c*2)+1));
  for (i=0;i<v.n-1;i++){
   b[I]=v.a[I];
   b[v.n]=c;   
   free(v.a);
   v.a=b;
   v.c=(2*v.c)+1;
   v.n++;
  }
 }
}
return v;

}
 

vector NewVector(){
 vector v;
 v.a=NULL;
 v.c=0;
 v.n=0;
 return v;
}


void main(){
 vector v;
v=NewVector();
v=inerisci(v);

}

L'errore del compilatore è questo:

arrayvariabili.c: In function ‘main’:
arrayvariabili.c:54:2: error: incompatible types when assigning to type ‘vector’ from type ‘int’
v=inerisci(v);


perche è sbagliato?[/I][/I]
 
Senza offesa, non c'è praticamente nulla di corretto in quel codice.
Nemmeno vale il tempo di mettersi a correggerlo dalla quantità di errori presenti, quindi, il mio consiglio è di ristudiarti un po' tutte le basi, ma proprio partendo dall'inizio, e ricominciare, perché da quel che vedo hai davvero moltissima confusione sui concetti base.
 
Racchiudi il testo nei tag "code" altrimenti non si legge niente. Comunque quoto Exsta, dovresti riguardarlo un attimo
 
Si in realtà sto iniziando a studiarlo solo ora all'università , comunque mi è stato corretto dal professore, le funzioni erano esatte ho soltanto sbagliato ad usarle nel main. ;)
 
Ultima modifica:
Che fossero sintatticamente esatte non significa che avessero senso scritte in quel modo.
L'errore sintattico era semplicemente un typo, "inerisci" invece di "inserisci", cosa che avresti visto anche da solo leggendolo.

Il mio commento era riferito all'assurdità delle cose che fai per raggiungere uno scopo veramente facile, e quell'accrocco di roba mi fa capire che ti sono poco chiare molte cose.
Ti accorgerai in futuro che il fatto che qualcosa sia sintatticamente esatto non significa necessariamente che non sia completamente stupido.

Ti accorgerai infatti che per come l'hai scritto, anche se risolvi i problemi di compilazione, ci sono problemi logici che portano a catrastofici segmentation fault;)
 
  • Mi piace
Reazioni: Scanetatore
Stato
Discussione chiusa ad ulteriori risposte.