在K&R第8章中,它具有putc和getc函数的自定义实现.在getc的第一个定义中,如果参数是stdin,根据_iob的定义,函数将尝试写入地址0,因为这是_iob [0] .ptr和_iob [0] .base的值.分配.这合法吗?
_iob的定义:
FILE _iob[20] = {
{0, (char *) 0, (char *) 0, _READ, 0},
{0, (char *) 0, (char *) 0, _WRITE, 0},
{0, (char *) 0, (char *) 0, _WRITE, 0}
};
Run Code Online (Sandbox Code Playgroud) 我想制作一个反向字符串函数,我这样做了:
void reverse_str(char s[]) {
int i, j;
char ch;
for(i = 0, j = strlen(s) - 1; i < j; i++, j--) {
ch = s[i];
s[i] = s[j];
s[j] = ch;
}
return ;
}
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,当我i < j改为i != jI 时,我得到了一个分段错误.当指针i和j指针也会发生这种情况.为什么?