Day02_C語言IO進程線程

01.思維導圖

02.將當前的時間寫入到time. txt的文件中,如果ctrl+c退出之后,在再次執行支持斷點續寫

1.2022-04-26 19:10:20

2.2022-04-26 19:10:21

3.2022-04-26 19:10:22

//按下ctrl+c停止,再次執行程序

4.2022-04-26 20:00:00

5.2022-04-26 20:00:01

#include <25051head.h>
//1.封裝時間函數
int get_currenttime(struct tm *s)
{time_t t;//1.計算秒數,存到t變量time(&t);//printf("t=%ld\n",t);//2.轉換年月日時分秒struct tm *temp=localtime(&t);if(NULL==temp){ERRLOG("localtime_error");return -1;}//將時間信息復制到傳入結構體中*s=*temp;//成功
#if 0printf("%d-%02d-%2d  %02d:%02d:%02d\n",\s->tm_year+1900,s->tm_mon+1,\s->tm_mday,s->tm_hour,s->tm_min,s->tm_sec);
#endifreturn 0;
}
//2.封裝獲取行號函數
int get_linenum(FILE* fp)
{int line_count=0;//記錄當前文件指針位置long current_pos=ftell(fp);//將文件指針移動到文件開頭fseek(fp,0,SEEK_SET);char ch;while((ch=fgetc(fp))!=EOF){if(ch=='\n'){line_count++;}}//恢復指針的位置fseek(fp,current_pos,SEEK_SET);return line_count+1;
}
int main(int argc, const char *argv[])
{//1.打開文件FILE* fp=fopen("./mytime.txt","a+");if(NULL==fp){ERRLOG("fopen_error");return -1;}char buf[128]="";//char last_line[128]="";while(1){//獲取行號int line_number=get_linenum(fp);//獲取時間結構體struct tm time_info;if(get_currenttime(&time_info)!=0){printf("get_currenttime error");fclose(fp);return -1;}//2.寫文件snprintf(buf,sizeof(buf)-1,"%d:%d-%02d-%02d  %02d:%02d:%02d\n",\line_number,time_info.tm_year+1900,time_info.tm_mon+1,\time_info.tm_mday,time_info.tm_hour,time_info.tm_min,time_info.tm_sec);size_t res=fwrite(buf,1,strlen(buf),fp);if(res<strlen(buf)){printf("fwrite_error");fclose(fp);return -1;}//偏移光標fseek(fp,0,SEEK_SET);//3.讀文件
#if 0while(1){//清零		memset(buf,0,sizeof(buf));res=fread(buf,1,sizeof(buf)-1,fp);if(res>0){fprintf(stdout,"%s",buf);}if(feof(fp)){//printf("讀取到文件結尾..\n");break;}if(ferror(fp)){printf("fread文件讀取失敗.\n");break;}}
#endiffprintf(stdout,"%s",buf);sleep(1);}	//4.關閉文件fclose(fp);fp=NULL;return 0;
}
#ifndef __25051HED_H__
#define __25051HED_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <ctype.h>
#include <sys/types.h>//引入open函數
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>//引入 getdtablesize函數,獲取文件描述符個數,包含close函數
#include <time.h>#define ERRLOG(msg) do{printf("__%d__",__LINE__);fflush(stdout);perror(msg);return -1;}while(0)  
#endif                                                                                            

03.使用文件IO函數實現圖片的拷貝

#include <25051head.h>
int main(int argc, const char *argv[])
{//1.打開文件umask(0);//打開當前目錄下的0001.jpg文件,以w方式打開int src_fd=open("./0001.jpg",O_RDONLY);if(-1==src_fd){ERRLOG("opensrc_error");}printf("src_fd=%d\n",src_fd);//打開目標圖片文件,以讀寫、創建、清零模式打開int dest_fd=open("./0002.jpg",O_RDWR|O_CREAT|O_TRUNC,0777);if(-1==dest_fd){ERRLOG("opendest_error");close(src_fd);}printf("dest_fd=%d\n",dest_fd);printf("opendest_success..\n");//2.拷貝數據char buf[128];ssize_t ret;while(1){//從源數據讀取數據ret=read(src_fd,buf,sizeof(buf)-1);if(-1==ret){ERRLOG("read_error");}else if(0==ret){printf("end of source_image..\n");break;}//將讀取的數據寫入目標文件ssize_t write_ret=write(dest_fd,buf,ret);if(-1==write_ret){ERRLOG("write_error");}else if(write_ret!=ret){fprintf(stderr,"寫入的超過讀取的\n");break;}}//3.關閉文件if(-1==close(src_fd)){ERRLOG("關閉源文件失敗");}if(-1==close(dest_fd)){ERRLOG("關閉目標文件失敗");}printf("close_success..\n");return 0;
}

04.使用文件IO讀取圖片 文件大小、文件偏移量,寬度,高度,像素


1.bmp文件頭(bmp file header):提供文件的格式、大小等信息 (14字節)

2.位圖信息頭(bitmap information):提供圖像數據的尺寸、位平面數、壓縮方式、顏色索引等信息(50字節)

3.位圖數據(bitmap data):就是圖像數據啦

#include <25051head.h>
int main(int argc, const char *argv[])
{//1.打開文件//umask(0);//2.以只讀的方式打開圖片文件int fd=open("./123.bmp",O_RDONLY);if(-1==fd){ERRLOG("open_error");}//1.獲取123.bmp文件的大小int buf;off_t size=lseek(fd,2,SEEK_SET);read(fd,&buf,4);printf("圖片123.bmp的大小為:%d\n",buf);//2.獲取文件偏移量//偏移光標到起始位置lseek(fd,10,SEEK_SET);read(fd,&buf,4);printf("圖片123.bmp的文件偏移量為%d\n",buf);//3.獲取寬度lseek(fd,18,SEEK_SET);read(fd,&buf,4);printf("圖片123.bmp的寬度為%d\n",buf);//4.獲取寬度lseek(fd,22,SEEK_SET);read(fd,&buf,4);printf("圖片123.bmp的高度為%d\n",buf);//5.獲取圖片像素if(-1==close(fd)){ERRLOG("close_error");}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89317.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89317.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89317.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FFmpeg中TS與MP4格式的extradata差異詳解

在視頻處理中&#xff0c;extradata是存儲解碼器初始化參數的核心元數據&#xff0c;直接影響視頻能否正確解碼。本文深入解析TS和MP4格式中extradata的結構差異、存儲邏輯及FFmpeg處理方案。 &#x1f4cc; 一、extradata的核心作用 extradata是解碼必需的參數集合&#xff0…

【CV數據集介紹-40】Cityscapes 數據集:助力自動駕駛的語義分割神器

&#x1f9d1; 博主簡介&#xff1a;曾任某智慧城市類企業算法總監&#xff0c;目前在美國市場的物流公司從事高級算法工程師一職&#xff0c;深耕人工智能領域&#xff0c;精通python數據挖掘、可視化、機器學習等&#xff0c;發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

SAP月結問題9-FAGLL03H與損益表中研發費用金額不一致(FAGLL03H Bug)

SAP月結問題9-FAGLL03H與損益表中研發費用金額不一致(S4 1709) 財務反饋&#xff0c;月結后核對數據時發現FAGLL03H導出的研發費用與損益表中的研發費用不一致&#xff0c;如下圖所示&#xff1a; 對比FAGLL03H與損益表對應的明細&#xff0c;發現FAGLL03H與損益表數據存在倍數…

HTML inputmode 屬性詳解

inputmode 是一個 HTML 屬性&#xff0c;用于指定用戶在編輯元素或其內容時應使用的虛擬鍵盤布局類型。它主要影響移動設備和平板電腦的輸入體驗。 語法 <input inputmode"value"> <!-- 或 --> <textarea inputmode"value"></texta…

軟考中級【網絡工程師】第6版教材 第1章 計算機網絡概述

考點分析&#xff1a; 本章重要程度&#xff1a;一般&#xff0c;為后續章節做鋪墊&#xff0c;有總體認識即可&#xff0c;選擇題1-2分高頻考點&#xff1a;OSI模型、TCP/IP模型、每個層次的功能、協議層次新教材變化&#xff1a;刪除網絡結構、刪除X.25、更新互聯網發展【基本…

Mysql事務與鎖

數據庫并發事務 數據庫一般都會并發執行多個事務&#xff0c;多個事務可能會并發的對相同的一批數據進行增刪改查操作&#xff0c;可能就會導致我們說的臟寫、臟讀、不可重復讀、幻讀這些問題。為了解決這些并發事務的問題&#xff0c;數據庫設計了事務隔離機制、鎖機制、MVCC多…

Bilibili多語言字幕翻譯擴展:基于上下文的實時翻譯方案設計

Bilibili多語言字幕翻譯擴展&#xff1a;基于上下文的實時翻譯方案設計 本文介紹了一個Chrome擴展的設計與實現&#xff0c;該擴展可以為Bilibili視頻提供實時多語言字幕翻譯功能。重點討論了字幕翻譯中的上下文問題及其解決方案。 該項目已經登陸Chrome Extension Store: http…

熱血三國野地名將列表

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>野地名將信息表</title><style>tabl…

【記錄】Word|Word創建自動編號的多級列表標題樣式

文章目錄 前言創建方式第一種方法&#xff1a;從“定義多級列表”中直接綁定已有樣式第二種方法&#xff1a;通過已有段落創建樣式&#xff0c;再綁定補充說明 尾聲 前言 這世上荒唐的事情不少&#xff0c;但若說到吊詭&#xff0c;Word中的多級列表樣式設定&#xff0c;倒是能…

使用mavros啟動多機SITL仿真

使用mavros啟動多機SITL仿真 方式1&#xff1a;使用roslaunch一鍵啟動Step1&#xff1a;創建一個新的 ROS 包或放到現有包里Step2&#xff1a;編輯 multi_mavros.launchStep3&#xff1a;構建工作空間并 source 環境Step4&#xff1a;構建工作空間并 source 環境 方式2&#xf…

Flutter 網絡棧入門,Dio 與 Retrofit 全面指南

面向多年 iOS 開發者的零阻力上手 寫在前面 你在 iOS 項目中也許習慣了 URLSession、Alamofire 或 Moya。 換到 Flutter 后&#xff0c;等價的「組合拳」就是 Dio Retrofit。 本文將帶你一次吃透兩套庫的安裝、核心 API、進階技巧與最佳實踐。 1. Dio&#xff1a;Flutter 里的…

工作室考核源碼(帶后端)

題目內容可更改 下載地址:https://mcwlkj.lanzoub.com/iUF3z300tgfe 如圖所示

數字孿生技術為UI前端提供全面支持:實現產品的可視化配置與定制

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 一、引言&#xff1a;數字孿生驅動產品定制的技術革命 在消費升級與工業 4.0 的雙重驅動下&a…

通往物理世界自主智能的二元實在論與羅塞塔協議

序章&#xff1a;AI的“兩種文化”之爭——我們是否在構建錯誤的“神”&#xff1f; 自誕生以來&#xff0c;人工智能領域始終存在著一場隱秘的“兩種文化”之爭。一方是符號主義與邏輯的信徒&#xff0c;他們追求可解釋、嚴謹的推理&#xff0c;相信智能的核心在于對世界規則…

探索 AI 系統提示與模型資源庫:`system-prompts-and-models-of-ai-tools`

在當今的人工智能領域,系統提示和工具模型的優化與應用對于提升 AI 助手的性能和響應質量至關重要。x1xhlol 開源的 system-prompts-and-models-of-ai-tools 倉庫為開發者們提供了一個豐富的資源集合,涵蓋了多種 AI 工具的系統提示、工具和模型。 倉庫概述 這個倉庫包含了超…

城市燈光夜景人像街拍攝影后期Lr調色教程,手機濾鏡PS+Lightroom預設下載!

調色教程 “城市燈光夜景人像街拍攝影后期 Lr 調色”&#xff0c;主要是利用 Lightroom 軟件&#xff0c;對城市夜景中燈光下的人像街拍照片進行處理。通過調整色彩平衡、明暗對比和細節質感&#xff0c;強化夜景燈光的絢麗感&#xff0c;突出人像主體&#xff0c;同時協調人物…

JavaScript中的call、apply、bind:用法、實現與區別詳解(面試常見)

# JavaScript中的call、apply、bind&#xff1a;用法、實現與區別詳解## 核心概念 這三個方法都用于改變函數執行時的this指向&#xff0c;是JavaScript中函數上下文操作的核心API。## 1. 基本用法對比### call方法 javascript function.call(thisArg, arg1, arg2, ...)特點&am…

使用vue開發瀏覽器chrome插件教程,及之間的消息通信

基本介紹 開發瀏覽器插件&#xff0c;首先需要先了解他的結構&#xff0c;瀏覽器擴展通常包括以下幾個部分 ├── manifest.json ├── package.json ├── vite.config.js ├── src ├── background │ └── index.js ├── content │ └── content.js ├── …

論文筆記(八十八)MLCVNet: Multi-Level Context VoteNet for 3D Object Detection

MLCVNet: Multi-Level Context VoteNet for 3D Object Detection 文章概括摘要I. 引言2. 相關工作2.1. 基于點云的 3D 目標檢測2.2. 上下文信息 3. 方法3.1. VoteNet3.2. PPC 模塊3.3. OOC 模塊3.4. GSC 模塊 4. 結果與討論4.1. 數據集4.2. 訓練細節4.3. 與最先進方法的比較4.4…

Redis初識第四期----Hash的命令和應用場景

首先為了區分Redis的鍵值對存儲的key-value&#xff0c;Hash中的鍵值對稱為field-value。 命令 1.Hset Hset key field value [field value] 返回值為設置成功的field-value的個數。 2.Hget Hget key field 返回為value 3.Hexists Hexists key field 判斷是否存在&a…