关于fputc、fgetc、printf、sprintf、sprintf_s以及fprintf

24 篇文章 1 订阅
15 篇文章 0 订阅

1.printf

printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。
格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些 转义字符表示特殊的含义。
2.sprintf

字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数(在 stdio.h 中定义)。

使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了可能buffer溢出。解决这个问题,可以考虑使用 snprintf和sprintf_s函数,该函数可对写入字符数做出限制

3.sprintf_s

函数功能:将数据格式化输出到字符串。

sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险

4.fprintf

fprintf是C/C++中的一个格式化写—库函数,位于头文件<stdio.h>中,其作用是格式化输出到一个流/文件中;函数原型为int fprintf( FILE *stream, const char *format, [ argument ]...),fprintf()函数根据指定的格式(format)向输出流(stream)写入数据(argument)。fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.

5.fputc

函数功能: 将字符ch写到文件指针fp所指向的文件的当前写指针的位置。

6.fgetc

意为从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。

这个函数的返回值,是返回所读取的一个字节。如果读到文件末尾或者读取出错时返回EOF。


实例:

1.printf("num = %d\n", num);

2.

char buf[80];

sprintf(buf, "%02x ", c);

3.

char buf[80];

sprintf_s(buf, 80, "dataLength %d\n", len);

4.

FILE* cpFile = NULL;

fopen_s(&cpFile, "xxx.txt", "w+");

fprintf(cpFile, "%d ", val->ubyte);

第一个参数也可以是stdout,直接输出到控制台。

5.

FILE* cpFile = NULL;

fopen_s(&cpFile, "xxx.txt", "w+");

fputc(')', cpFile);

6.

FILE* cpFile = NULL;

fopen_s(&cpFile, "xxx.txt", "w+");

char c = fgetc(cpFile);


### 回答1: 可以使用以下程序:#include <stdio.h> #include <stdlib.h>int main() { char filename[256]; int i; printf("输入txt文件名:"); scanf("%s", filename); FILE *fp = fopen(filename, "r"); FILE *fp2 = fopen("output.txt", "w"); for (i=0; i<20; i++) { fgets(filename, sizeof(filename), fp); } while (!feof(fp)) { fprintf(fp2, "%s", filename); fgets(filename, sizeof(filename), fp); } fclose(fp); fclose(fp2); return 0; } ### 回答2: 使用C语言编写删除txt文件前20行内容的程序,可以分为以下步骤: 1. 首先,需要包含相关的头文件和定义必要的变量。头文件包括stdio.h和stdlib.h,定义一个文件指针和一个字符数组。 ```c #include <stdio.h> #include <stdlib.h> #define MAX_LENGTH 1000 // 假设每行最多1000个字符 ``` 2. 创建一个新函数,用于删除txt文件前20行内容。该函数需要传入文件名作为参数。 ```c void deleteLines(char* filename) { // 打开原始txt文件 FILE* file = fopen(filename, "r"); if (file == NULL) { printf("无法打开文件!\n"); return; } // 创建一个临时文件来保存剩下的内容 FILE* temp = fopen("temp.txt", "w"); if (temp == NULL) { printf("无法创建临时文件!\n"); return; } char line[MAX_LENGTH]; int count = 0; // 读取并删除前20行内容 while (fgets(line, MAX_LENGTH, file) != NULL) { count++; if (count <= 20) { continue; } fputs(line, temp); } // 关闭原始txt文件和临时文件 fclose(file); fclose(temp); // 删除原始txt文件 remove(filename); // 重命名临时文件为原始txt文件 rename("temp.txt", filename); printf("已成功删除txt文件前20行内容!\n"); } ``` 3. 在主函数中调用该函数,并传入txt文件名作为参数。 ```c int main() { char filename[100]; printf("请输入txt文件名:"); scanf("%s", filename); deleteLines(filename); return 0; } ``` 以上是一个简单的用于删除txt文件前20行内容的C语言程序。注意,该程序会打开一个临时文件来保存剩下的内容,然后删除原始txt文件,最后将临时文件重命名为原始txt文件。为了保证程序的正确性,请确保输入的文件名是存在的。 ### 回答3: #include <stdio.h> #include <stdlib.h> int main() { FILE *file; char filename[100]; char tempFilename[100]; int count = 0; int ch; printf("请输入要删除前20行内容的txt文件名:"); scanf("%s", filename); // 打开源文件 file = fopen(filename, "r"); if (file == NULL) { printf("无法打开文件!\n"); exit(1); } // 打开临时文件用于保存删除后的内容 sprintf(tempFilename, "temp_%s", filename); FILE *tempFile = fopen(tempFilename, "w"); if (tempFile == NULL) { printf("无法创建临时文件!\n"); fclose(file); exit(1); } // 读取并删除前20行内容 while ((ch = fgetc(file)) != EOF) { if (count < 20) { if (ch == '\n') { count++; } } else { fputc(ch, tempFile); } } // 关闭文件 fclose(file); fclose(tempFile); // 删除源文件并重命名临时文件为源文件名 remove(filename); rename(tempFilename, filename); printf("成功删除前20行内容!\n"); return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值