C语言文件问题,求大佬解答

供稿:hz-xin.com     日期:2025-01-12
c语言关于文件的问题(求大佬解惑,万分感激~)?

fwrite用法不对,应该用fprintf。fwrite的文件一般是二进制文件,记事本打开的是文本文件。

fp 是以 W的模式打开的 也就是写入的模式打开
发生错误那里你却是用来读取文件 所以就冲突了
正确的应该是上面写入的fp 要先调用close一次 再以 r 的模式打开一次然后读取就没问题了

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{ FILE *fp;

  char str1[30],str2[30],str3[40],t;

  int i,j,k; //有改动 

  if((fp = fopen("A.txt","r")) == NULL)

  { printf("error");

    exit(0);

  }

  fgets(str1,10,fp);

  puts(str1);

  fclose(fp);

  if((fp = fopen("B.txt","r")) == NULL)

  { printf("error");

    exit(0);

  }

  fgets(str2,30,fp);

  puts(str2);

  fclose(fp);

  strcpy(str3,strcat(str1,str2));

  for(k=0; str3[k]; k++); //有改动

  for(i=0; i<k-1; i++) //有改动

  { for(j=i+1; j<k; j++) //有改动

    { if(str3[i]>str3[j])

      { t = str3[i];

        str3[i] = str3[j];

        str3[j] = t;

      }

    }

  }

  puts(str3);

  if((fp = fopen("C.txt","w")) == NULL)

  { printf("error");

    exit(0);

  }

  fputs(str3,fp);

  return 0;

}



  1. 打开文件A.txt并读取一行最多不超过10个字节到str1中并关闭文件A.txt;

  2. 打开文件B.txt并读取一行最多不超过30个字节到str2中并关闭文件B.txt;

  3. 将str2拼接到str1后再拷贝到str3中,两层for循环再对str3中的字符进行排序;

  4. 最后将完成排序的str3写入到文件C.txt中;



一个C语言转义符识别问题。求大佬解答?
注意输入文字中可能有空格,以及输入完单个字符后需要getchar()跳过回车 C代码和运行结果如下:输入输出符合样例,望采纳~附源码:include <stdio.h> void emoji(char *txt, char s, char t) { int i, j, p = -1; \/\/ p记录转义符s的下标 for (i = 0; txt[i] != '\\0'; ++i) {...

这个c语言题目有点难,求大佬帮忙
根据以上说明,千位和各位应该好提取,分别除以1000和取余10即可得到,主要就是百位和十位,给您一个思路:象这种中间的数字,想办法把它变成旁边的数,比如3721,取余1000后就变成了721,再提取7就可以用前面我讲的方法了,十位上的2也是用类似的方法哦。以上是我对您提出问题的解答,希望能帮助到您...

c语言数组逆序问题 求助大佬
include <stdio.h> define N 20 int main(){ int i = 0, a[N];do { scanf("%d", a + i);} while (a[i++] > 0);{ int j,t;for(j=0,i-=2;j 0; i++)printf("%5d", a[i]);return 0;}

C语言题目 求大佬帮看一下
首先说一下题目的答案是:11 程序运行了一下, 截图如下:下面解析一下原因:1、根据判断条件来看,当 k = 10时, while 条件不成立。2、但是需要注意的一点是,在while条件中,使用的是 K++, 而++符号在后面。3、++运算符使用有两种, 先+1在用, 和先使用在+1。而此处使用的明明是后者。4...

求c语言大佬,为什么我的文件不能够被构建?
用codeblocks写c,首先你要新建一个项目,然后点击图片中第五个。,之后选择c语言,输入你的文件名(比如test),然后再将你上面的代码复制进去点击编译,搞定。

求大佬解决C语言问题
题目要求用指针函数,既返回值为指针类型的函数。在主函数接收返回值并输出打印。从输入的学生中找出有不及格的学生,并输出其不及格的课目成绩。(在打印所有学生的同时就筛选出存在不及格的学生,可减少循环次数,本题只有3个学生,假设更多的话)。下面是代码:include <stdio.h> include <malloc.h> ...

c语言未经处理的异常。求大佬解答
您好,很高兴回答您的问题。您的这个题目,系统已经很明显告诉您了错误的原因。因为您定义的x为字符型数据,那么它对应的输入输出格式符为%c,但是您在输入语句中写的是%s,是字符串格式,不符合字符型单个变量的输入输出。根据题目意思,应该是要输入字符串,那么定义的时候就要写成char x[2],因为存放的...

各位C语言大佬啊帮个忙呀这是老师上课布置的上机作业求答案
include <stdio.h>int check(char ch){if(ch>='a'&&ch<='z') return (ch-'a'+1);else if(ch>='A'&&ch<='Z') return (ch-'A'+1);else return -1;}void main(){char ch;scanf("%c",&ch);printf("%d",check(ch));} ...

C语言问题求帮助!
输出的是一个整数,这个整数由表达式a<b?a:d<c?d:b确定 即a<b?a:(d<c?d:b),对于d<c?d:b,因为d=1,c=2,d<c成立,则d:b取前面的d,表达式变为a<b?a:d。同理a=4,b=3,a

C语言错误,大师们诊疗一下
首先char *str1[20],*str2[20],*str3[20];请把*去掉,字符串前面不能加*,这样gets就能用了 然后swap的声明请放到main函数前面;把char换成void,因为不需要返回值,同样swap函数里把char*[20]的*去掉,建议你在好好理解指针。。。include<stdio.h> include<string.h> void swap();main(){...