C90 结构中的指针EXC_BAD_ACCESS代码=1,地址=0x0

问题描述

我正在做一个 uni 项目,我在使用 C90 时遇到了问题。我正在尝试创建一个程序来读取一个单词,然后在它们旁边打印字母以及它们出现的次数。我应该使用现有的代码并填写“信件”和“报告”功能。我应该使用代码块,但它给出了以下错误,我无法弄清楚它们对我的生活意味着什么“ld.exe||无法打开输出文件 bin\Debug\Lab4_2a.exe Permission denied|”和“||错误:ld 返回 1 个退出状态|”。然后我尝试使用 CLion,它给了我以下错误“EXC_BAD_ACCESS(代码 = 1,地址 = 0x0)”,据我所知,这是一个内存问题。我试图初始化我的变量,但它没有用。有谁知道是什么导致了这个问题?感觉就像我尝试了所有方法,但我在这里被困了几个小时。在下一个任务中,我应该为很多单词做同样的工作,这就是为什么有一个未使用的函数 createnode。>

提前致谢!

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct charact
{
    char ch;
    int occurs;
    struct charact *next;
};
typedef struct charact Char;
typedef Char * listofChar;
typedef Char * CharNode_ptr;
void letters(char name[50],listofChar * chars_ptr);
void report(listofChar chars);
Char * createnode(char ch);
int main(void)
{
    char name[50];
    listofChar chars = NULL;
    scanf("%49s",name);
    letters(name,&chars);
    report(chars);
    return 0;
}
Char * createnode(char ch)
{
    CharNode_ptr newnode_ptr ;
    newnode_ptr = malloc(sizeof (Char));
    newnode_ptr -> ch = ch;
    newnode_ptr -> occurs = 0;
    newnode_ptr -> next = NULL;
    return newnode_ptr;
}
void initialize(listofChar *chars)
{
    int i ;
    for (i=0; i<50; i++)
    {
        chars[i]->ch = '\0';
        chars[i]->occurs = 0;
        chars[i]->next=NULL;

    }
    return;
}

void letters(char name[50],listofChar * lst_ptr)
{
    size_t i,j;int len;
    initialize(lst_ptr);
    len = strlen(name);
    for(i=0;i<len;i++){
        lst_ptr[i]->ch = name[i];
    }
    for (j=0;j<len;j++){
        for(i=0;i<len;i++){
            if(lst_ptr[j]->ch==name[i]){
                lst_ptr[j]->occurs++;
            }
        }
    }
    return;

}
void report(listofChar chars)
{
    int i=0 ;
    while(chars[i].ch!='\0')
    {
        printf("%c :",chars[i].ch);
        printf("%d\n",chars[i].occurs);
        i++;
    }
    return;

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)