从文件中读取换行符后,这是一种安全的方法来修剪换行符吗?
while ( fgets(buffer, 1024, fp) != NULL )
{
buffer[strlen(buffer)-1] = '\0';
fprintf (stderr, "%s\n", buffer);
}
Run Code Online (Sandbox Code Playgroud)
它没有给我任何seg故障,但它可能会导致问题吗?我应该这样做吗?
while ( fgets(buffer, 1024, fp) != NULL )
{
tmp = (char *) malloc(strlen(buffer));
strncpy(tmp, buffer, strlen(buffer) - 1);
tmp[strlen(buffer)-1] = '\0';
fprintf (stderr, "%s\n", tmp);
}
Run Code Online (Sandbox Code Playgroud)
我看到你的第一个选项没有真正的问题 - 如果你拥有buffer,你可以修改它.只是几个小问题:
fgets 如果文件的最后一行没有以一个结尾(编辑:或者如果该行不适合缓冲区,如Aaron所指出的那样)可能实际上不会返回换行符 - 所以你应该检查确实存在新线在那里.
另外,我会strlen(buffer)>0在访问之前检查一下buffer[strlen(buffer)-1].
请注意,您的第二个选项有一个错误 - 它分配的字节太少(您需要为空字符添加一个额外的字节).