Unhandled exception in simple.exe. Hjælp !
Jeg har flg program i c:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "simple.h"
/* implement functions defined in simple.h */
list_element_p newElement(list_element_p prev, char *str) {
/* allocate new element */
list_element_p elem = (list_element_p)malloc(sizeof(struct list_element));
/* copy str into the element */
int str_len = strlen(str);
elem->str = (char *)malloc(sizeof(char)*str_len);
strncpy(elem->str, str, str_len);
/* insert element */
elem->prev = prev;
if (prev != NULL) {
list_element_p next = prev->next;
elem->next = next;
prev->next = elem;
if (next != NULL)
next->prev = elem;
} else
elem->next = NULL;
return elem;
}
void deleteElement(list_element_p element) {
/* delete the element from the list */
list_element_p prev = element->prev;
list_element_p next = element->next;
if (prev != NULL)
prev->next = next;
if (next != NULL)
next->prev = prev;
/* free the list element */
free(element->str);
free(element);
}
void printElement(list_element_p element) {
printf(element->str);
}
list_element_p findElement(list_element_p list_head, char *str) {
list_element_p list = list_head;
while (list != NULL) {
if (strcmp(str, list->str) == 0)
return list;
list = list->next;
}
/* No element found */
return NULL;
}
/* simple test program */
int main(int argc, char **argv) {
list_element_p head;
list_element_p elem;
list_element_p traversal_element;
list_element_p search_element;
/* create list */
head = newElement(NULL, "string 1");
elem = newElement(head, "string 2");
elem = newElement(elem, "string 3");
elem = newElement(elem, "string 4");
printElement(head);
printf("\n");
traversal_element = head;
printf("All list elements:\n");
while (traversal_element != NULL) {
printElement(traversal_element);
printf("\n");
traversal_element = traversal_element->next;
}
search_element = findElement(head, "string 3");
printf("Deleting element: ");
printElement(search_element);
printf("\n");
deleteElement(search_element);
printf("All list elements (again):\n");
traversal_element = head;
while (traversal_element != NULL) {
printElement(traversal_element);
printf("\n");
traversal_element = traversal_element->next;
}
search_element = findElement(head, "string 4");
printf("Deleting element: ");
printElement(search_element);
printf("\n");
deleteElement(search_element);
traversal_element = head;
while (traversal_element != NULL) {
printElement(traversal_element);
printf("\n");
traversal_element = traversal_element->next;
}
}
og en header-fil:
#ifndef __SIMPLE_H_INCLUDED
#define __SIMPLE_H_INCLUDED
typedef struct list_element *list_element_p;
struct list_element {
char *str;
list_element_p next;
list_element_p prev;
};
/* create a new list element with the specified str and add it after
prev */
list_element_p newElement(list_element_p prev, char *str);
/* delete the specified list element from its list */
void deleteElement(list_element_p element);
/* print the str value of a specified list element */
void printElement(list_element_p element);
/* search sequentially for a list element with the specified str value,
beginning at list_head */
list_element_p findElement(list_element_p list_head, char *str);
#endif /* __SIMPLE_H_INCLUDED */
- Når jeg kører programmet får jeg flg fejl:
"Unhandled exception in simple.exe:0xC0000002: Access violation"
Jeg er temmelig ny i c-programmering, så der er sikkert noget basalt jeg har overset