mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
136 字
1 分钟
文件操作
2026-07-12

一、文件基础操作#

1.1 打开文件并读取内容#

#include <stdio.h>
int main()
{
FILE *fp;
char ch, *filename = "1.txt";
if((fp = fopen(filename, "r")) == NULL)
{
printf("cannot open file\n");
exit(0);
}
while((ch = fgetc(fp)) != EOF)
putchar(ch);
fclose(fp);
return 0;
}

1.2 从键盘输入字符写入文件#

#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* fp;
char ch, filename[20];
printf("Please input(file name):");
scanf("%s", filename);
getchar();
if ((fp = fopen(filename, "w")) == NULL)
{
printf("Can not open file.\n");
exit(0);
}
printf("Please input(end of #):");
ch = getchar();
while (ch != '#')
{
fputc(ch, fp);
putchar(ch);
ch = getchar();
}
putchar('\n');
fclose(fp);
return 0;
}

二、文件填空题#

2.1 文件填空1(答案)#

#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* fp;
char ch, filename[20];
printf("Please input(file name):");
scanf("%s", filename);
getchar();
if ((fp = fopen(filename, "w")) == NULL)
{
printf("Can not open file.\n");
exit(0);
}
printf("Please input(end of #):");
ch = getchar();
while (ch != '#')
{
fputc(ch, fp);
putchar(ch);
ch = getchar();
}
putchar('\n');
fclose(fp);
return 0;
}

三、综合练习题#

3.1 编程题1 - 二维数组变一维#

#include <stdio.h>
void fun(int a[3][4], int b[12]) {
int i, j, k = 0;
for(i = 0; i < 3; i++) {
for(j = 0; j < 4; j++) {
b[k++] = a[i][j];
}
}
}
int main() {
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int b[12], i;
fun(a, b);
for(i = 0; i < 12; i++) {
printf("%d ", b[i]);
}
printf("\n");
return 0;
}

3.2 编程题2 - 删除字符#

#include <stdio.h>
void fun(char *str, char ch) {
int i, j = 0;
for(i = 0; str[i] != '\0'; i++) {
if(str[i] != ch) {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[100] = "abcdeabcde";
char ch = 'a';
fun(str, ch);
printf("%s\n", str);
return 0;
}

3.3 编程题3 - 统计数字个数#

#include <stdio.h>
int fun(char *str) {
int count = 0;
while(*str != '\0') {
if(*str >= '0' && *str <= '9') {
count++;
}
str++;
}
return count;
}
int main() {
char str[100] = "abc123def456";
printf("数字个数:%d\n", fun(str));
return 0;
}

3.4 编程题4 - 返回n-1的数#

#include <stdio.h>
int fun(int a[], int n) {
int i;
for(i = 0; i < n; i++) {
a[i]--;
}
return n;
}
int main() {
int a[5] = {1, 2, 3, 4, 5};
int n = fun(a, 5);
for(int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}

3.5 填空题3 - 字符串中数字累加和#

#include <stdio.h>
int fun(char *str) {
int sum = 0;
while(*str != '\0') {
if(*str >= '0' && *str <= '9') {
sum += *str - '0';
}
str++;
}
return sum;
}
int main() {
char str[100] = "a1b2c3";
printf("数字之和:%d\n", fun(str));
return 0;
}

3.6 填空题4 - 插入字符#

#include <stdio.h>
#include <string.h>
void fun(char *str, char ch) {
int i, len = strlen(str);
for(i = len; i >= 0; i--) {
str[i+1] = str[i];
}
str[0] = ch;
}
int main() {
char str[100] = "hello";
fun(str, 'A');
printf("%s\n", str);
return 0;
}

3.7 填空题5 - 最长字符串#

#include <stdio.h>
#include <string.h>
char* fun(char str[][20], int n) {
int i, max_len = 0, index = 0;
for(i = 0; i < n; i++) {
if(strlen(str[i]) > max_len) {
max_len = strlen(str[i]);
index = i;
}
}
return str[index];
}
int main() {
char str[3][20] = {"abc", "abcd", "ab"};
printf("最长字符串:%s\n", fun(str, 3));
return 0;
}
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

文件操作
https://blog.radarweb.top/posts/c/文件操作/
作者
Sherry
发布于
2026-07-12
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录