你代码中的一些语句很麻烦,会给你警告
char
*change(char *str) {
    int i, len;
    len = strlen(str);
    for (i=0; i < len; i++){
        if (str[i] == "\n") {   //this is troublesome
              ****str[i] = " "; //this is troublesome****
        } 
    }
return str;
}
添加str[i] =  ' '而不是 str[i]="";
您正在尝试比较字符串文字和字符 - 这是不可接受的
char
    *change(char *str) {
        int i, len;
        len = strlen(str);
        for (i=0; i < len; i++){
            if (str[i] == '\n') {
                  str[i] = ' '; 
            } 
        }
    return str;
    }
这里*change(strfromfile)不需要。此外,您似乎忘记了声明char *finalstring,但您声明 
char finalstring并分配了一个指向它的指针,这是不可接受的。
if (part == TRUE) {
    char finalstring;  //this is troublesome
    finalstring = *change(strfromfile);   //this is trouble some
    printf("\n%s", finalstring);
}
return 0;
}
change to 
 if (part == TRUE) {
    char *finalstring;
    finalstring = change(strfromfile);  
    printf("\n%s", finalstring);
}
return 0;
}
我希望这已经足够了。从下一次开始尝试发布整个可编译代码而不是片段。简短的自包含代码示例 (SSCCE)。