segmentation violation when indirecting through unallocated pointers
我尝试了一些方法,但RESU主要不知道如何逐行读取文件来比较它们之间的行,我得到了错误分割错误(核心转储)。这是我的uniq-u命令功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 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[200];的地方有char *line;
请提及"prev"和"line"变量的声明。无论如何,我认为阅读本文可以解决您的问题:char*和char[]
- char char * * +;在线;
- 尝试阅读"laurentiubobora the answers from the链接字符串提供的,除非dynamically is read- only You should have also allocated和我分使用未初始化的warning about。them into焦[变化] + [在线] 200、200;应该做的工作。
- 我甚至不是去改变,但我知道:(
- "你有laurentiubobora also changed to the 2nd parameter of和fgets 199?
- 是的,这是一样的
- 我很高兴你laurentiubobora @有它的工作。不要忘记我对马克回答回答:如果你helped selected as the问题解决。
- 我试图实施"订单的唯一的命令,你必须显示the contents of a文件没有复制线exemple:我要你必须显示你坏坏的你:我这是我唯一的_ function(){啊/ _ name1=fopen(文件参数[ 2 ],"R"文件_ name1);if(!=null){和fgets(prev1199 _ name1,文件和fgets();while(199 _ name1,在线文件)!只读=空)/**/{if(a在线!strcmp(在线prev1 { printf(),),prev1"%s");} else if((prev1,在线strcmp)){ printf("%s",在线strcpy();} };prev1,在线)
- 这些问题solved the