怎样创建一个网站,网上购物系统,wordpress 压缩包,手机资讯网站源码Format格式化
%1s或者%2s,%3s:取字符串的前1,2或者3位。%*c:屏蔽一个字符。%[A-Z]:取一个A到Z的值。
%[^a-z]:不取a到z的值。
%[^\n]#xff1a;取非换行之前的值。printf(%5d, a):左边补 格式化#xff1a;有正则在其中。
int main()
{printf(%5d\n取非换行之前的值。printf(%5d, a):左边补 格式化有正则在其中。
int main()
{printf(%5d\n, 239);printf(%05d\n, 239);printf(%0-5d\n, 239);printf(%-5d\n, 239);printf(%.5d\n, 239);printf(%d\t\n, 239);printf(%u\n, 239);printf(%o\n, 239);getchar();return 0;
}
输出 239
00239
239
239
00239
239
239
357 字符串的标准输入和输出
int scanf(const char* restrict format, ...)
int a, b;
scanf(%d %d, a, b)
int printf(const char* format, ...);
int a 10;
int b 20;
char* str asdfgh;
printf(a %d, b %d, str %s, a, b, str) sprintf(char* str, const char* format, ...)字符串拼接数值等不同类型。
功能根据参数 format 字符串来转换并格式化数据然后将结果输出到str指定的空间中直到出现字符串结束符\0为止。参数 str输出字符串首地址。format字符串格式用法和printf()一样。返回值 成功失败-1
int a, b, value;
char c;
char str[20] {0};
sprintf(str, %d %c %d %d, a, c, b, value);sscanf(const char *str, const char* format, ...)把值从字符串中提取出来。
功能从str指定的字符串读取数据并根据参数format字符串来转换并格式化数据。参数 str指定的字符串首地址。format字符串格式用法和scanf()一样。返回值 成功参数数目成功转换的值的个数。失败-1
char src[] a 10, b 20;
int a;
int b;
sscanf(src, a %d, b %d, a, b);
printf(a:%d, b:%d\n, a, b);格式化文件读写
int fprintf(FILE* stream, const char* format, ...);写文件。
功能根据参数format字符串来转换并格式化数据然后将结果输出到stream指定的文件中指定出现字符串结束符\0为止。参数 stream已经打开的文件format字符串格式用法和printf()一样返回值 成功失败-1
int a 10;
int b 20;
fprintf(fp, %d %d %d, a, b, a b); int fscanf(FILE* stream, const char* format, ...);读文件。
功能从stream指定的文件读取字符串并根据参数format字符串来转换并格式化数据。参数 stream已经打开的文件。format字符串格式用法和scanf()一样。返回值 成功参数数目成功转换的值的个数。失败-1。
int a, b, c;
fscanf(fp, %d %d %d\n, a, b, c);
printf(a %d, b %d, c %d\n, a, b, c); 1122
16-12
17*18
96/6
3247
56/7
89*2
33-10
32/8
99/10 自己初次编写
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
#include string.h
#include stdlib.hchar ArithmeticOperations[4] { ,-, *, / };char GetOperater(char* p)
{for (int i 0; i 4; i){char* op strchr(p, ArithmeticOperations[i]);if (op ! NULL){return *op;break;}}
}int GetResult(int num1, int num2, char op)
{int result 0;switch (op){case :result num1 num2;break;case -:result num1 - num2;break;case *:result num1 * num2;break;case /:result num1 / num2;break;default:break;}return result;
}
int main()
{FILE *fpr fopen(F:/Practice/homework, r);if (!fpr){printf(文件读取失败。);return -1;}char buf[20] { 0 };char* str[10];for (int i 0; i 10; i){str[i] (char*)malloc(sizeof(char) * 20);}int i 0;while (!feof(fpr)){memset(buf, 0, sizeof(buf)); // 防止前一次的赋值污染本次赋值。char* p fgets(buf, sizeof(buf), fpr);if (p ! NULL str[i] ! NULL){//printf(读取结果%s\n, p);memcpy(str[i], p, 20);i;}}fclose(fpr);int LineNum i;FILE* fpw fopen(F:/Practice/homework, w);if (fpw NULL){perror(fpw open.);return -1;}i 0;//for (i 0; i LineNum; i)//{// printf(%s, str[i]);//}while (iLineNum){char op GetOperater(str[i]);int num1 atoi(str[i]); // 此处提取符号和数字可以通过sscanf来优化。格式化字符串。int num2 atoi(strchr(str[i], op)1); // 指针加1。int result GetResult(num1, num2, op);char str2[30] { 0 };sprintf(str2, %d%c%d%c%d\n, num1, op, num2, , result);printf(%s\n, str2);int a fputs(str2, fpw);if (!a){i;}}for (int i 0; i 10; i){free(str[i]); // 指针释放需要添加str[i] NULL;}fclose(fpw);getchar();return 0;
} 二次改写
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
#include stdlib.h
#include string.hint main()
{FILE* fpr fopen(F:/Practice/a.txt, r);if (!fpr){return -1;}char** buf (char**)malloc(sizeof(char*) * 100);int a, b;char c;float value;for (int i 0; i 10; i){buf[i] (char *)malloc(sizeof(char) * 20);fgets(buf[i], 20, fpr);//fscanf(fpr, %d%c%d, a, c, b);}//fclose(fpr);if (fclose(fpr) ! 0) // 更正式的关闭方式。{printf(Error in closing file. \n);exit(EXIT_FAILURE);}FILE* fpw; // 第二种打开文件的方式。if ((fpw fopen(F:/Practice/a.txt, w)) NULL){fprintf(stdout, Cant open file.\n);exit(EXIT_FAILURE);}for (int i 0; i 10; i){sscanf(buf[i], %d%c%d\n, a, c, b);switch (c){case :value a b;break;case -:value a - b;break;case *:value a * b;break;case /:value a * 1.0 / b;break;default:break;}fprintf(fpw, %d%c%d%.2f\n, a, c, b, value);}if (fclose(fpw) ! 0) // 更正式的关闭方式。{printf(Error in closing file. \n);exit(EXIT_FAILURE);}for (int i 0; i 10; i){free(buf[i]);buf[i] NULL;}free(buf);getchar();return 0;
} 基于结构体的写法已经很有面向对象类的感觉了
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
#include stdlib.h
#include string.hstruct opter
{int a;int b;char c;float value;
};typedef struct opter opt;int main(int argc, char* argv[])
{opt* p (opt*)malloc(sizeof(opt) * 10);FILE* fpr fopen(F:/Practice/a.txt, r);if (fpr NULL)return -1;for (int i 0; i 10; i){// 要么是指针写法-要么是结构体的点。fscanf(fpr, %d%c%d\n, ((pi)-a), p[i].c, p[i].b); // 用-必须写上括号。switch (p[i].c){case :p[i].value p[i].a p[i].b;break;case -:p[i].value p[i].a - p[i].b;break;case *:p[i].value p[i].a * p[i].b;break;case /:p[i].value p[i].a * 1.0 / p[i].b;break;default:break;}}fclose(fpr);//FILE fpw fopen(F:/Practice/a.txt, w);fpr fopen(F:/Practice/a.txt, w); // 要么重新建立一个变量fpw, 要么继续用原来这个fpr。if (!fpr){return -1;}for (int i 0; i 10; i){fprintf(fpr, %d%c%d%.2f\n, p[i].a, p[i].c, p[i].b, p[i].value);}fclose(fpr);free(p);p NULL;getchar();return 0;
}两个文件先后处理
#define _CRT_SECURE_NO_WARNINGS
#include stdio.hint main(int argc, char* argv[])
{FILE* fpr fopen(F:/Practice/a.txt, r);FILE* fpw fopen(F:/Practice/b.txt, w);if (!fpr || !fpw){return -1;}int a, c, d;char b;fscanf(fpr, %d%c%d%d, a, b, c, d);printf(a %d, b %c, c %d, d %d, a, b, c, d);fprintf(fpw, %d %c %d %d, a, b, c, d);fclose(fpr);fclose(fpw);getchar();return 0;
} 字符串拼接与分割。
int main013()
{char str[] 相遇在2021;char str2[4];int a;sscanf(str, %6s%d, str2, a); // 一个汉字占用两个字符。printf(str2 %s, a %d\n, str2, a);getchar();return 0;
}