【发布时间】:2016-04-14 10:37:36
【问题描述】:
我尝试了一些东西,但 Resus 主要不知道如何逐行读取文件以比较它们之间的行,我得到错误分段错误(核心转储)。 这是我的 uniq -u 命令功能
void uniq_u()
{
// strcpy(file_name1,params[2]);
FILE *file = fopen ( file_name1, "r" );
if ( file != NULL )
{
fgets(prev, sizeof prev,file);
while ( fgets ( line, sizeof line, file ) != NULL ) /* read a line */
{
if(!strcmp(line, prev))
printf("%s", prev);
else
strcpy(prev,line);
}
fclose ( file );
}
}
谢谢!
【问题讨论】:
-
调试是找出分段违规发生位置的超级方法。您没有显示
prev和line是如何定义的(为什么不将它们设为本地?),但我的猜测是它们是没有分配内存的指针。换句话说,你可能有char *line;,你需要char line[200];