我是 C 程序的新手,我正在开发一个将一组结构写入 .txt 文件的程序。
这是我的尝试:
#include <stdio.h>
struct FileSig {
char name[256];
char mode;
char user_id;
char group_id;
char size;
char time_last_mod[50];
};
int main(int argc, char **argv)
{
struct FileSig FileSig1;
FILE *fp_Out;
fp_Out = fopen( "out.txt" , "w" );
printf("Enter name: ");
scanf("%s", FileSig1.name);
fprintf(fp_Out, "Name: %s\n", FileSig1.name);
printf("Enter mode: ");
scanf("%s", FileSig1.mode);
fprintf(fp_Out, "Mode: %s\n", FileSig1.mode);
printf("Enter user id: ");
scanf("%s", FileSig1.user_id);
fprintf(fp_Out, "userID: %s\n", FileSig1.user_id);
printf("Enter group id: ");
scanf("%s", FileSig1.group_id);
fprintf(fp_Out, "groupID: %s\n", FileSig1.group_id);
printf("Enter size: ");
scanf("%s", FileSig1.size);
fprintf(fp_Out, "size: %s\n", FileSig1.size);
printf("Enter time last modifly: ");
scanf("%s", FileSig1.time_last_mod);
fprintf(fp_Out, "time_last_mod: %s\n", FileSig1.time_last_mod);
// fp_Out = fopen( "out.txt" , "w" );
// fprintf(fp_Out, "Name: %s\nMode: %d\nUserID:%d\nGroupID: %d\nSize:%d\nTime last modifly:%s", FileSig1.name, FileSig1.mode, FileSig1.user_id, FileSig1.group_id, FileSig1.size, FileSig1.time_last_mod);
fclose(fp_Out);
return 0;
}
当我在第二个输入后运行它时,它显示段错误(核心已转储)。
更多人请帮助我吗? 我是这方面的新手,我想学习。
最佳答案
“%s”格式说明符用于字符串。但是 mode
是一个字符。使用“%c”作为字符。此外,将要存储字符的地址传递给scanf
,而不是未初始化的值。
关于写入文件时转储 C 程序核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44620275/