strchr 函数一直给我核心转储错误
strchr function keep giving me core dumped error
我正在尝试编写代码,使用 getline() 和 strchr() 函数在屏幕上复制和打印文本文件中的单词。
所以这是我的代码:
void read_teams(char* text)
{
FILE *fp=fopen(text,"r");
char* tname=NULL;
size_t tname_size=0;
while(getline(&tname,&tname_size,fp)!=EOF)
{
tname[strchr(tname,'\n')-tname]='[=10=]';
printf("%s\n",tname);
}
fclose(fp);
}
读取 strchr 函数时显示:
Segmentation fault (core dumped)
为什么?
我必须将此功能与 getline 一起使用,所以请不要告诉我以其他方式编写代码。
如果缓冲区不包含 \n
字符,则 strchr()-tname
将排在 tname
之前。这将导致段错误。所以使用:
while(getline(&tname,&tname_size,fp)!=EOF)
{
char *p= strchr(tname,'\n');
if (p)
tname[p-tname]='[=10=]';
printf("%s\n",tname);
}
我正在尝试编写代码,使用 getline() 和 strchr() 函数在屏幕上复制和打印文本文件中的单词。 所以这是我的代码:
void read_teams(char* text)
{
FILE *fp=fopen(text,"r");
char* tname=NULL;
size_t tname_size=0;
while(getline(&tname,&tname_size,fp)!=EOF)
{
tname[strchr(tname,'\n')-tname]='[=10=]';
printf("%s\n",tname);
}
fclose(fp);
}
读取 strchr 函数时显示:
Segmentation fault (core dumped)
为什么? 我必须将此功能与 getline 一起使用,所以请不要告诉我以其他方式编写代码。
如果缓冲区不包含 \n
字符,则 strchr()-tname
将排在 tname
之前。这将导致段错误。所以使用:
while(getline(&tname,&tname_size,fp)!=EOF)
{
char *p= strchr(tname,'\n');
if (p)
tname[p-tname]='[=10=]';
printf("%s\n",tname);
}