2016-09-22 3 views
-3

質問が既に返信されていた場合にはお詫び申し上げます。私は助けを見つけることができませんでした。構造体に含まれる文字列の文字を置き換えるにはどうすればよいですか?

私の割り当ては、パラメータ内に構造体(文字列を含む)を取り、その文字列内の文字を置き換える関数を作成することです。今はスペースを「J」という文字に置き換えようとしていますが、何か難しそうです。

HERESに私のコード:

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; 
} 

は、ここで私が取得していますエラーです。

セグフォルト!!!

答えて

0

あなたはstructのスペースを入れていますが、structの中の文字列のスペースはありません。

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

これはすべて割り当てをリークします。そしてsizeof(char)は1です。 –

+0

'item-> word = strdup("これは単語 ");'そしてあなた自身の行を保存します。 –

+0

@CarlNorumあなたがPOSIXシステムにいると仮定します... – Oka

関連する問題