fprintf编译成功但是在文本中会显示乱码
//刚进入文件操作- -
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<process.h>
int main()
{
FILE *fp;
char arr[30];
//char ch;
//判断是否有文件
if((fp=fopen("D:\\1111.txt","w"))==NULL)
{
printf("打开文件失败\n");
getchar();
exit(0);
}
//do
//{
// ch=getchar();
// //在文件中写入读取的字符
// fputc(ch,fp);
//}while(ch!='#');
//fclose(fp);
//fp=fopen("D:\\1111.txt","r");
//ch=fgetc(fp);
//while(ch!=EOF)
//{
//
// putchar(ch);
// //从文件中读取字符到编译器
// ch=fgetc(fp);
//}
//fclose(fp);
//printf("\n");
fp=fopen("D:\\1111.txt","w");
getchar();
//输入字符
gets(arr);
//写入文件显示出
fputs(arr,fp);
//关闭文件
fclose(fp);
//fp=fopen("D:\\1111.txt","r");
////读取文件到编译器中
//fgets(arr,sizeof(arr),fp);
//printf("%s\n",arr);
////关闭文件
//fclose(fp);
//打开文件准备写入
fp=fopen("D:\\1111.txt","w");
//fprintf(文件类型指针,格式字符串,输出列表)
//fseek(fp,sizeof(arr),0);
//以格式字符串的类型写入fp所指的磁盘文件中
fprintf(fp,"%s",arr);
fclose(fp);
//fp=fopen("D:\\1111.txt","r+");
//fscanf(文件类型指针,格式字符串,输出列表)
//getchar();
//fscanf(fp,"%s",arr);
//printf("%s\n",arr);
//fclose(fp);
return 0;
}
试过打印字符在文件文本中还是乱码,是不是哪里写的问题
通过fprintf在文本中完美显示写入的字符串的结果
帮忙说下上面的产生原因,谢谢
问题如下,在代码里给你标注了哈。
int main()
{
FILE* fp;
//问题三:未初始化数组,未用到的内存可能会有乱码
char arr[30];
if ((fp = fopen("1111.txt", "w")) == NULL)
{
printf("打开文件失败\n");
getchar();
exit(0);
}
fp = fopen("1111.txt", "w");
getchar();
gets(arr);//问题四:使用了不安全的gets函数,目前在c11标准中gets函数已被舍弃
//建议使用fgets函数。或者其他函数。
fputs(arr, fp);
fclose(fp);
fp = fopen("1111.txt", "w");
//问题二:应该为%s,而不是%a;
fprintf(fp, "%a", arr);
fclose(fp);
return 0;
}
你是要把hello写入文件?
fprintf(fp,"%s",arr);
字符串用%s啊
看文本文件里的东西干啥,只要读和写的内容都是一致的就行了,
写到文件都是二进制内容,主要看你用什么字符集显示这些二进制文件,比如用gbk和utf显示就是不一样的
第35行的getchar()不需要删除掉
第53行改为:
fprintf(fp,"%s",arr);
这里你手滑打错了,将s写成了a
应该是
fprintf(fp,"%s",arr);
运行输出乱码,可以看下编码方式是不是设置对了,别是utf-8,然后打印用gbk,另外看下电脑是否支持对应的中文字体
这篇文章:有关于fprintf()函数的用法 也许有你想要的答案,你可以看看谢谢大家,是提问题的时候改错了,是fprintf(fp,"%s",arr);但是还是不会停下来
更改过后,有个想法这个fprintf是不是不会停下来等你输入
我试过直接给arr字符串赋值,文件文本会有显示,但是在编译器上不会停下等待输入,直接会停止
即使是写入和读写状态
试过用写入读入字符的文件操作都可以实现,只有这个fprintf会出现下面问题
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<process.h>
int main()
{
FILE *fp;
char arr[30]={0};
if((fp=fopen("D:\\1111.txt","w"))==NULL)
{
printf("打开文件失败\n");
getchar();
exit(0);
}
fprintf(fp,"%s",arr);
fclose(fp);
return 0;