如何替换结构中字符串中的字符?

时间:2016-09-22 18:18:16

标签: c

如果此问题已经得到回答,请道歉。我找不到任何帮助。

我的任务是创建一个函数,该函数接受参数中的结构(包含字符串)并替换该字符串中的字符。现在我正试图用字母替换空格' J'但是我遇到了一些困难。

继承我的代码:

func.h

typedef struct item item;
struct item {
    char * word;
};

void space(item * item, char letter);

func.c

void space(item * item, char letter) {

    char * mot = item->word;
    int size = strlen(item->word);
    printf("\n\n%s\n\n",mot);

    for(int i=0; i<=size; i++) {
        if(mot[i] == ' ') {
            mot[i] = letter;                
        }
    }

    printf("\n\nNEW WORD: ");
    printf("%s",mot);
    printf("\n\n");
}

的main.c

int main(int argc, char *argv[]) {

    printf("\n---Program---\n\n");

    char *word;
    char add    = 'x';

    item * item = malloc(sizeof(item));

    item->word  = "this is a word";
    //printf("%s",item->word);

    printf("\n\n");

    space(item,add);

    return 0;
}

这是我得到的错误:

Seg fault !!!

1 个答案:

答案 0 :(得分:0)

你是malloc结构的空间,但不是结构中的字符串。

item * item = malloc(sizeof(item));
item->word  = malloc(sizeof(char) * MAXSTRINGSIZE); //add this line or something similar
strcpy(item->word, "this is a word");