#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUCKETS 11 typedef struct {     char item[10];     int key; }element; element* ht[BUCKETS]; void p1(); unsigned int stringToInt(char *key); int h(int k); void insert(char *str); element* search(int k, int* num); int main() {     p1();     return 0; } void p1() {     for (int i = 0;i < BUCKETS;i++)         ht[i] = NULL;     FILE* f = fopen("input.txt", "r");     if (!f) {         fprintf(stderr, "file doesn't exist\n");         exit(EXIT_FAILURE);     }     char line[200];     fgets(line, sizeof(line), f);     printf(" input strings : %s\n\n", line);     char delimeter[5] = " ";     char* word = strtok(line, delimeter);     while (word) {         insert(word);         word = strtok(NULL, delimeter);     }     printf(" item key\n");     for (int i = 0; i < BUCKETS; i++) {         if(ht[i]->key)             printf("ht[%2d] : %8s%8d\n", i, ht[i]->item, ht[i]->key);         else printf("ht[%2d] :\n", i);     }     printf("\nstring to search >> ");     char string[10];     element* temp;     int num = 0;     scanf("%s", string);     temp = search(stringToInt(string), &num);     if (!temp) printf("it dosen't exist!\n");     else printf("item:%s, key: %d, the number of comparisons : %d\n", temp->item, temp->key, stringToInt(string)); } unsigned int stringToInt(char *key) {     int number = 0;     while (*key)         number += *key++;     return number; } int h(int k) {     return k % BUCKETS; } void insert(char *str) {     int key = stringToInt(str);     int hk = h(key);     int i = hk;     while (ht[i])         i = h(++i);     strcpy(ht[i]->item, str);     ht[i]->key = key; } element* search(int k, int* num) {     int homeBucket, currentBucket;     homeBucket = h(k);     for (currentBucket = homeBucket; ht[currentBucket] && ht[currentBucket]->key != k;) {         currentBucket = (currentBucket + 1) % BUCKETS;         if (currentBucket == homeBucket)             return NULL;         *num++;     }     if (ht[currentBucket] && ht[currentBucket]->key == k)         return ht[homeBucket];     return NULL; }

하다보니까 ht를 포인터배열로 정의해야할거같아서 바꿨는데 insert함수 strcpy에서 또 

0x7B54E559(ucrtbased.dll)에(1.exe의) 처리되지 않은 예외가 있습니다. 0xC0000005: 0x00000000 위치를 기록하는 동안 액세스 위반이 발생했습니다..

이오류뜸씨발왜이래미치겟어..