我已經爲RPN計算器做了一個代碼,它對基本運算符(+,*,/,^)以及浮點數和負數都能正常工作。它也評估表達式,如 (x^2 + x * 4/-2):1 - > 5:0.5(x從1到5,步長爲0.5)訪問衝突初始化結構
我使用了一個char堆棧。
現在,我想添加對諸如cos(x),tan(x)等函數的支持。爲了達到這個目的,我需要構建一個char * stack,解析後存儲sin,cos,sqrt等單詞。
問題是,初始化堆棧時,出現「訪問衝突:寫入地址0x01」錯誤。
我不知道爲什麼。它可能是使用malloc()?
這些是使用堆棧的功能。
typedef struct nodo{
char *operador;
struct nodo *next;
}tipo;
typedef tipo *elemento;
typedef tipo *top;
int push(top*,char*) ;
void init(top *);
void libera(top*);
char* pop(top*);
int main(){
(...)
top op;
init(&op);
(...)
}
void init(top *pila) {
*pila = malloc(sizeof(**pila));
(*pila)->operador = NULL;
(*pila)->next = NULL;
}
void libera(top *pila) {
free(*pila);
*pila = NULL;
}
int push (top *last,char *dato){
elemento new1;
int j=strlen(dato);
new1 = (elemento)malloc(sizeof(tipo));
strncpy(new1->operador, dato,j);
new1->next=*last;
*last=new1;
;}
char* pop(top *last){
elemento aux;
char* caract;
aux = (elemento)malloc(sizeof(tipo));
aux=*last;
if (!aux)
return 0;
*last=aux->next;
strcpy(caract,aux->operador);
free(aux);
return caract;
}
它沒有工作,以及,我得到相同的「訪問衝突」錯誤。 謝謝! – Audo
你傳給init的是什麼?請出示聲明。 – n3rd4n1
int main() { (...) top op; 的init(&op); (...) } – Audo