日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文件操作(升级)

發布時間:2023/11/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件操作(升级) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

計算字符串“25 + 32 = ”

#include<stdio.h> #include<string.h>int calc_string(char *s) {char buf1[100] = {0};char oper = 0;char buf2[100] = {0};int len = strlen(s);int i;for(i = 0; i < len; i++){if( '+' == s[i] || '-' == s[i] || '*' == s[i] || '/' == s[i] ){strncpy(buf1,s,i);oper = s[i];break;}}int start = i + 1;for(; i < len; i++){if(s[i] == '='){strncpy(buf2,&s[start ],i - start);}}printf("buf1 = %s,oper = %c,buf2 = %s\n",buf1,oper,buf2);int a = atoi(buf1);int b = atoi(buf2);switch(oper){case '+':return a+b ;case '-':return a-b;case '*':return a*b;case '/':if(a)return a/b;else return 0;}}int main() {char *s = "25 + 46 = ";printf("%d\n",calc_string(s));return 0; }

計算文本文件中的計算:

/*** a.txt ***/ 23 + 45 = 45 * 12 = 56 / 2 = 45- 12 = /*** calc.c ***/ #include<stdio.h> #include<string.h>int calc_string(char *s) {char buf1[100] = {0};char oper = 0;char buf2[100] = {0};int len = strlen(s);int i;for(i = 0; i < len; i++){if( '+' == s[i] || '-' == s[i] || '*' == s[i] || '/' == s[i] ){strncpy(buf1,s,i);oper = s[i];break;}}int start = i + 1;for(; i < len; i++){if(s[i] == '='){strncpy(buf2,&s[start ],i - start);}}//printf("buf1 = %s,oper = %c,buf2 = %s\n",buf1,oper,buf2);int a = atoi(buf1);int b = atoi(buf2);switch(oper){case '+':return a+b ;case '-':return a-b;case '*':return a*b;case '/':if(a)return a/b;else return 0;}}void cuterrturn(char *s) {int len = strlen(s);if('\n' == s[len - 1]){s[len - 1] = 0;} }int main() {FILE *p = fopen("./a.txt","r");FILE *p1 = fopen("./b.txt","w");char buf[1024];char buf1[1024];while(!feof(p)){memset(buf,0,sizeof(buf));fgets(buf,sizeof(buf),p); //從文件中讀一行記錄,字符串最后是以’\n’結尾cuterrturn(buf); //吃掉從文件每行讀出來的換行符int value = calc_string(buf);memset(buf1,0,sizeof(buf));sprintf(buf1,"%s%d\n",buf,value);fputs(buf1,p1);}fclose(p);fclose(p1);return 0; }

運行結果;

運行結果; b.txt 23 + 45 = 68 45 * 12 =540 56 / 2 = 28 45- 12 =33 0

分析:最后面多一個0是因為用feof判斷是否到達文件結尾會多循環一次。

?

strncpy()函數:將指定長度的字符串復制到字符數組中

語法:

char *strncpy(char *destinin, char *source, int maxlen);

參數:

destinin:表示復制的目標字符數組;

source:表示復制的源字符數組;

maxlen:表示復制的字符串長度。

轉載于:https://www.cnblogs.com/wanghao-boke/p/11209356.html

總結

以上是生活随笔為你收集整理的文件操作(升级)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。