C语言实验10_文件
C语言实验10_文件实验10(01)文件的建立和基本读写操作编写一个程序,要求如下:(1)从键盘上输入 20 个字符。(2)将这 20 个字符存储到文件 file1.txt 中。(3)将文件 file1.txt 中最后 10 个字符读取出来,并显示在屏幕上。输入描述输入 20 个字符输出描述将文件中的后 10 个字符输出输入样例abcdefghjijk123456zy输出样例jk123456zy#
·
C语言实验10_文件
实验10(01)文件的建立和基本读写操作
编写一个程序,要求如下:
(1)从键盘上输入 20 个字符。
(2)将这 20 个字符存储到文件 file1.txt 中。
(3)将文件 file1.txt 中最后 10 个字符读取出来,并显示在屏幕上。
输入描述
输入 20 个字符
输出描述
将文件中的后 10 个字符输出
输入样例
abcdefghjijk123456zy
输出样例
jk123456zy
#include <iostream>
#include <queue>
using namespace std;
queue<int> bq;
int vis[1000];
int grc[1000][1000];
int v, e, v1, e1;
int main(int argc, char *argv[])
{
memset(grc, -1, sizeof(grc));
memset(vis, 0, sizeof(vis));
scanf("%d%d", &v, &e);
for (int i = 0; i < e; i++)
{
scanf("%d%d", &v1, &e1);
scanf("%d", &grc[v1][e1]);
}
bq.push(1);
while (!bq.empty())
{
int f = bq.front();
vis[f] = 1;
for (int i = 1; i <= v; i++)
{
if (grc[f][i] != -1 && !vis[i])
bq.push(i);
}
printf("%c", f + 64);
bq.pop();
}
return 0;
}
实验10(02)文件的读写操作
编写一个程序,要求如下:
(1)在 ASCII 码 65~122 的范围中,随机产生 50 个字符(通过调用函数 rand()产生随机数,
比如产生 0~99 的随机数可以使用 rand()%100)。
(2)将这 50 个字符存储到文件 file2.txt 中,并关闭文件。
(3)读取文件 file2.txt 中的所有 50 个字符,将这 50 个字符中的英文字母大小写形式互换,
即如果字符是小写英文字母,那么就变成大写;如果字符是大写英文字母,那么就变成小写;
其他字符不变。将这变换后的 50 个字符追加到 file2.txt 中。
输入描述
无
输出描述
无
#include <stdio.h>
#include <stdlib.h>
#define N 50
void change(char *str, int LEN);
int main()
{
int i;
FILE *fp;
char str[N];
for (i = 0; i < N; i++)
{
str[i] = 65 + rand() % (122 - 65); //rand()%100;
}
fp = fopen("file2.txt", "w+");
if (fp)
{
for (i = 0; i < N; i++)
{
fputc(str[i], fp);
}
fclose(fp);
}
fp = fopen("file2.txt", "r");
if (fp)
{
for (i = 0; i < N; i++)
{
str[i] = fgetc(fp);
}
fclose(fp);
}
change(str, sizeof(str));
fp = fopen("file2.txt", "a");
if (fp)
{
for (i = 0; i < N; i++)
{
fputc(str[i], fp);
}
fclose(fp);
}
for (i = 0; i < N; i++)
{
printf("%c", str[i]);
}
printf("\n");
return 0;
}
void change(char *str, int LEN)
{
int i;
for (i = 0; i < LEN; i++)
{
if (str[i] >= 'A' && str[i] <= 'Z')
{
str[i] += 32;
}
else if (str[i] >= 'a' && str[i] <= 'z')
{
str[i] -= 32;
}
}
}
实验10(03)文件的综合操作
编写一个程序,要求如下:
(1)可以获取任意类型的文件的大小。
(2)将该文件分成大小相等的 2 个文件,分别为 data1 和 data2。
#include <stdio.h>
#include <stdlib.h>
int trans(FILE *fp, FILE *fpnew, int LEN);
int main()
{
int i, LEN;
FILE *fp, *fp1, *fp2;
fp = fopen("file2.txt", "rb");
if (fp)
{
i = 0;
while (!feof(fp)) //当没有到文件尾就循环,否则退出。
{
fgetc(fp);
i++;
}
LEN = i - 1;
rewind(fp); //将文件指针重新指向一个流的开头
fp1 = fopen("data1.txt", "wb+");
if (fp1)
{
trans(fp, fp1, LEN / 2);
fclose(fp1);
}
fseek(fp, LEN / 2, SEEK_END);
fp2 = fopen("data2.txt", "wb+");
if (fp2)
{
trans(fp, fp2, LEN - LEN / 2);
fclose(fp2);
}
fclose(fp);
}
return 0;
}
int trans(FILE *fp, FILE *fpnew, int LEN)
{
int i;
if (fp == NULL)
{
return 0;
}
if (fpnew == NULL)
{
return 0;
}
for (i = 0; i < LEN; i++)
{
fputc(fgetc(fp), fpnew);
}
return 1;
}
实验10(04)文件的综合操作2
编写一个程序,要求如下:
(1)读取实验 3(文件的综合操作Ⅰ)中分割的 2 个文件 data1 和 data2
(2)将文件 data1 和 data2 合并为一个文件 data。
输入描述
无
输出描述
无
#include <stdio.h>
#include <stdlib.h>
int trans(FILE *fp, FILE *fpnew, int LEN);
int main()
{
int i;
int LEN1, LEN2;
FILE *fp, *fp1, *fp2;
fp1 = fopen("data1.txt", "rb");
fp2 = fopen("data2.txt", "rb");
if (fp1 && fp2)
{
i = 0;
while (!feof(fp1))
{
fgetc(fp1);
i++;
}
LEN1 = i - 1;
i = 0;
while (!feof(fp2))
{
fgetc(fp2);
i++;
}
LEN2 = i - 1;
rewind(fp1);
rewind(fp2);
fp = fopen("file2.txt", "wb+");
if (fp)
{
trans(fp1, fp, LEN1);
fseek(fp, LEN1, SEEK_END);
trans(fp2, fp, LEN2);
fclose(fp);
}
fclose(fp1);
fclose(fp2);
}
return 0;
}
int trans(FILE *fp, FILE *fpnew, int LEN)
{
int i;
if (fp == NULL)
{
return 0;
}
if (fpnew == NULL)
{
return 0;
}
for (i = 0; i < LEN; i++)
{
fputc(fgetc(fp), fpnew);
}
return 1;
}
更多推荐
已为社区贡献2条内容
所有评论(0)