Is this safe to do? Does fgets
terminate the buffer with null or should I be setting the 20th byte to null after the call to fgets
and before I call clean
?
// strip new lines
void clean(char *data)
{
while (*data)
{
if (*data == '
' || *data == '
') *data = '';
data++;
}
}
// for this, assume that the file contains 1 line no longer than 19 bytes
// buffer is freed elsewhere
char *load_latest_info(char *file)
{
FILE *f;
char *buffer = (char*) malloc(20);
if (f = fopen(file, "r"))
if (fgets(buffer, 20, f))
{
clean(buffer);
return buffer;
}
free(buffer);
return NULL;
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…