c语言编程试题文件..

在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文件方面的习题,形成自己的解题方案,如果还是不对,把代码可以贴出来,然后进行排错解决。
希望对题主有所帮助!