Jea*_*ond 1 c arrays printf pointers
我试图理解为什么我的后面会有一个奇怪的角色 printf()
char* extract_word()
{
char* sentences = "hi! i'm a banana!";
int starts = 4;
int ends = 12;
int count;
int nb_char = ends-starts+1;
char* word = malloc(nb_char);
printf("\n\n%d\n",ends-starts);
for(count = starts; count < ends;count++)
{
word[count-starts] = sentences[count];
printf("%c == \n",sentences[count]);
}
word[count-starts+1] = '\0';
printf("\n\n%s",word);
return word;
}
Run Code Online (Sandbox Code Playgroud)
的printf
回报:
Run Code Online (Sandbox Code Playgroud)8 i == ' == m == == a == == b == a == i'm a bau
如果我删除了'\0'
我得到的东西:
Run Code Online (Sandbox Code Playgroud)'m a ba¨Á£´
在你的代码中
word[count-starts+1] = '\0';
Run Code Online (Sandbox Code Playgroud)
您应该将代码更改为
word[nb_char-1] = '\0';
Run Code Online (Sandbox Code Playgroud)
因为,你已经分配了nb_char
字节,最后一个索引就是nb_char-1
.
也就是说,在使用返回的指针之前,总是需要malloc()
通过检查返回来检查是否成功NULL
.
归档时间: |
|
查看次数: |
419 次 |
最近记录: |