在main函数中创建一个文件,将键盛输入
的字符串写入文件中。打开文件,
读出字符串。。将指定的字符串连接到该字符串后(不使用库函数strcat),形成新串存放到另一个文件中。要求:指定的字符串由键盛输入。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void save(const char *fileName, const char *str)
{
FILE *file = fopen(fileName, "w");
if (!file)
{
printf("failed to open file '%s'\n", fileName);
exit(1);
}
fprintf(file, "%s", str);
fclose(file);
}
void load(const char *fileName, char *str, int n)
{
FILE *file = fopen(fileName, "r");
if (!file)
{
printf("failed to open file '%s'\n", fileName);
exit(1);
}
fgets(str, n, file);
str[strcspn(str, "\n")] = 0;
fclose(file);
}
void my_strcat(char *str1, const char *str2)
{
char *p = str1 + strlen(str1);
while (*str2)
*p++ = *str2++;
*p = '\0';
}
#define N 256
int main()
{
char s1[N], s2[N*2], s3[N];
fgets(s1, N, stdin);
s1[strcspn(s1, "\n")] = 0;
save("test.txt", s1);
load("test.txt", s2, N);
fgets(s3, N, stdin);
s2[strcspn(s2, "\n")] = 0;
my_strcat(s2, s3);
save("test2.txt", s2);
return 0;
}
读出写入文件就不用讲咯,两个字符串合并的方法很多,最笨的办法是定义三个数组,数组a1长度为l1等于字符串s1的长度,数组a2长度l2等于字符串s2的长度,那么数组a3长度l3=l1+l2,两个字符串的每个字符都对应一个数组值,那么你想要什么字符,不想要什么字符,都可以合到a3当中
没问题的话请点击采纳答案
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i, j, s, k, u;
FILE *fp1, *fp2;
char ch[100], a[100], b[100];
printf("输入字符串的长度:");
scanf("%d", &n);
scanf("%s", ch); // 读入字符串,用for 循环读入scanf("%c", &ch[i])的方式太麻烦了,并且你for循环多读入了回车符
fp1 = fopen("a.txt", "w");
if (fp1 == NULL) {
printf("can not open the file\n");
exit(0);
}
fprintf(fp1, "%s", ch);
fclose(fp1);
printf("被连接的字符串长度:\n");
scanf("%d", &u);
scanf("%s", b);
for (j = 0, s = 0; j < n; j++) {
a[s] = ch[j];
s++;
}
for (j = 0, s; j < u; j++) {
a[s] = b[j];
s++;
}
fp1 = fopen("a.txt", "r");
fp2 = fopen("b.txt", "w");
if (fp2 == NULL) {
printf("can not open the file\n");
exit(0);
}
for (k = 0; k < n + u; k++) {
fprintf(fp2, "%c", a[k]);
}
fclose(fp1);
fclose(fp2);
}
下面是我给的代码,里面有一些注释,
#ifndef __INCLUDE_H__
#define __INCLUDE_H__
#include <stdio.h>
#include <string.h>
#include <errno.h>
#endif
int main()
{
FILE* pf1 = fopen("test1.txt", "w");
if (pf1 == NULL)
{
printf("%s", strerror(errno));
}
//写第一个文件
int ch = 0;
while ((ch = getchar()) != '\n')
{
fputc(ch, pf1);
}
fclose(pf1);
//以 读 的形式打开第一个文件
pf1 = fopen("test1.txt", "r");
FILE* pf2 = fopen("test2.txt", "w");
if (pf2 == NULL)
{
printf("%s", strerror(errno));
}
//拷贝第一个文件 到 第二个文件
while ((ch = fgetc(pf1)) != EOF)
{
fputc(ch, pf2);
}
//继续写 第二个文件
while ((ch = getchar()) != '\n')
{
fputc(ch, pf2);
}
//关闭文件
fclose(pf1);
fclose(pf2);
pf1 = NULL;
pf2 = NULL;
return 0;
}
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE*fp;
char ch,filename[20];
printf("请输入文件名:\n");
scanf("%s",filename);
fp=fopen(filename,"w");
ch=getchar();
printf("请输入数据内容:\n");
ch=getchar();
while(ch!='\n')
{
fputc(ch,fp);
ch=getchar();
}
fclose(fp);
printf("Read Data:");
fp=fopen(filename,"r");
while(!feof(fp))
{
ch=fgetc(fp);
putchar(ch);
}
fclose(fp);
putchar(10);
}
题主可以先尝试自己实现一下,如果不是很明白思路,可以在网上/CSDN上搜索一下相关实现方法,看看思路,去实现一下。这题主要考查的就是file文件相关知识,可以看看file文件方面的习题,形成自己的解题方案,如果还是不对,把代码可以贴出来,然后进行排错解决。
希望对题主有所帮助!