文字列をスライスして、この新しいスライスされた部分をコピーしようとしています。Cで文字列をスライスしてコピーする
char* makeWord(char *c, int j, int i){
char *s;
s = malloc(sizeof(char)*i-j)
int k;
for (k = 0; k < i - j; k++){
s[k] = c[j+k];
}
printf("%s ", s);
return s;
}
元の文字列の関連部分をコピーするポインタを返そうとしています。
最後に奇妙な記号が印刷されています。
例:
c[] = "hello darkness my old friend"
makeWord(c, 0, 5); makeWord(c, 6,14); makeWord(c, 15, 17); makeWord(c, 18, 21);
は生成: こんにちはdarknessmt_'3 MYP古いfriendP
を初心者の質問には申し訳ありません、ありがとうございます。
何の文字列がで終わっていますか?あなたの 's'は何かが欠けています。 – user2357112
'sizeof(char)'は常に1であるため、冗長です –
は、より意味のある変数名を 'i'や' j'よりも使用することを検討します。 –