文件写入、读出-linux

基于linux操作系统,编写存储功能,在网上搜了几个例子,一直报创建错误,

fopen(SAVE_PATH_OWN_INF_FILE, "w+")

fopen(SAVE_PATH_OWN_INF_FILE, "a+"),

使用这两个创建均失败,最后发现创建可以用以下示例:已测试OK

若未写LOG_ERROR等处理,改为printf即可。

示例

void test(void)

{

const char barcode_to_write[30] = "1234567890"; // 要写入的条形码

char barcode[30]; // 假设条形码不会超过99个字符

FILE* file;

//test 1 --------------

printf("open file\r\n");

file = fopen(SAVE_PATH_OWN_INF_FILE, "w+"); // 使用 "w+" 模式以写入方式打开文件,如果文件不存在则创建它

if (file == NULL) {

fprintf(stderr, "Failed to create barcode file: %s\n", strerror(errno));

// 尝试创建文件路径

char* directory = strdup(SAVE_PATH_OWN_INF_FILE);

char* ptr = directory;

while ((ptr = strchr(ptr, '/')))

{

*ptr = '\0';

mkdir(directory, 0777);

*ptr = '/';

ptr++;

}

// 再次尝试打开文件

file = fopen(SAVE_PATH_OWN_INF_FILE, "w+");

if (file == NULL) {

fprintf(stderr, "Failed to create barcode file: %s\n", strerror(errno));

exit(EXIT_FAILURE);

}

else

{

LOG_INFO("open file success");

}

}

pthread_mutex_lock(&p_mutexOwnInf); //os changes

printf("write file\r\n");

fwrite(&barcode_to_write,sizeof(barcode_to_write),1,file);

pthread_mutex_unlock(&p_mutexOwnInf); //os changes

fclose(file);

sleep(1);

//test 2 --------------

file = fopen(SAVE_PATH_OWN_INF_FILE, "r");//"r");

// 读取条形码

fread(&barcode,sizeof(barcode),1,file) ;

 

printf("Retrieved barcode: %s\n", barcode);

fclose(file);

}

  • 20
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值