C程序计算字符串

时间:2018-05-06 18:21:58

标签: c

这是我第一次在StackOverflow中询问某些内容,通常我会在这里找到我的问题。

我有这个代码需要打印给定单词中每个字符出现的次数。我被分配仅更改函数report()letters()中的代码。这就是我在过去几个小时里尝试和搜索的结果。由于没有以正确的方式释放或访问内存,我感觉程序无法运行。

另外,我对ListofChar charsListofChar lst_ptr指针到底指向的确切位置感到有些困惑。

#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() {
    char name[50];
    ListofChar chars = NULL;
    scanf("%s", 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 letters(char name[50],ListofChar * lst_ptr) {
    ListofChar current  = lst_ptr ;
    int i=0  , j=0 ;
    for( i= 0 ; i < 50 ; i++){
        for( j = 0 ; j < strlen(name) ; j++){
            if(current->ch  == name[i]){
                current->occurs++;
                break; }

            else if ( current-> ch == '\0' ){
                current-> ch = name[i];
                current-> occurs ++;
                break;  }
        }
    }
    return;
}





void report(ListofChar chars) {

    while((*chars).ch != '\0' )
        printf("%c  %d \n",(*chars).ch,(*chars).occurs);

    return;
}

0 个答案:

没有答案