关于c语言文件输出问题
无法直接输出文件内容,需要先将文件读入到内存,再输出到标准输出上。
可以采用逐个字符读入,每读入一个输出一个的方式。
区分文件类型,操作有所不同。
1 文件本身为文本文件,那么逐个直接输出即可。
FILE *fp = fopen("name.txt", "r");
int c;
while((c=fgetc(fp))!=EOF) putchar(c);
2 文件为二进制文件,直接输出结果会是乱码。这时需要输出二进制值,并自行换行,使得输出美观。
FILE *fp = fopen("name.bin", "rb");
int c;
int i = 0;
while((c=fgetc(fp))!=EOF)
{
printf("0x%02X,", c);//16进制方式输出字符。
i++;
if(i%8==0) printf("
"); //每输出8个字符换行一次。
}
文件的操作步骤:
#include #include int main()
{
FILE *fp;
int i, d;
fp=fopen("data.txt","w");
if(fp==NULL)
{
printf("File cannot open! " );
exit(0);
}
for(i=0; i<10; i++)
{
scanf("%d", &d);
fprintf(fp,"%d", d);
}
fclose(fp);
return 0;
}
格式化输出:
#include #include int main()
{
FILE *fp;
int i, No;
float salary;
fp=fopen("data.csv","w");
if(fp==NULL)
{
printf("File cannot open! " );
exit(0);
}
//输入5名员工的工号,并保存到文件中
for(i=0; i<5; i++)
{
scanf("%d %f", &No, &salary);
fprintf(fp,"%d, %.2f
", No, salary);
}
fclose(fp);
return 0;
}
扩展资料:
从文件中读取字符:
#include #include int main()
{
FILE *fp;
char c;
if ((fp=fopen( "data.dat" , "r" ))==NULL)
{
printf("File cannot open!");
exit(0);
}
while((c=fgetc(fp))!=EOF)
putchar(c);
fclose(fp);
return 0;
}
参考资料:
百度百科-C语言
fprintf类似于printf, 只是第一个参数是个文件指针,先以写方式打开文件:
FILE* file = fopen("calendar.txt", "w");
然后把原来的printf函数改成fprintf就行了。
比如: printf("%d年%d月\n",year,local->tm_mon+1);
改为: fprintf(file,"%d年%d月\n",year,local->tm_mon+1);
最后记得关闭文件: fclose(file);
修改代码如下:
void main()
{
struct tm *local;
time_t t;
t=time(0);
local=localtime(&t);
int year,*y;
int *week,p=1;
week=&p;
int monthday[]={31,28,31,30,31,30,31,31,30,31,30,31};
char month[12][12]={"January","February","March","April","May","June","July","August","September","October","November","December"};
char weekday[7][4]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
FILE* file = fopen("calendar.txt", "w");
year=local->tm_year;year+=1900;
fprintf(file,"%d年%d月\n",year,local->tm_mon+1);
fprintf(file,"\n");
y=&year;
if(runnian(y))
monthday[1]=29;
daysandweek(y,week);
for(int j=0;j<=11;j++)
{if(j==local->tm_mon){
for(int k=0;k<15;k++)
fprintf(file, " "); fprintf(file,"%s\n",month[j]);
fprintf(file,"_____________________________________\n");
for(int g=0;g<=6;g++)
fprintf(file,"%s ",weekday[g]);
fprintf(file,"\n");
for(int x=1;x<=*week;x++)
for( int k=0;k<5;k++)
fprintf(file," ");
for(int m=1;m<=monthday[j];m++)
{
if((*week+m)%7==0)
fprintf(file,"%d\n",m);
else
if(m<10)
fprintf(file,"%d ",m);
else
fprintf(file,"%d ",m);
}
fprintf(file,"\n\n\n");
}
*week=(*week+monthday[j])%7;
}
fclose(file);
}
貌似原函数有很多问题、、、
- - 用文件指针试试吧
c语言中关于字符的输入输出问题。 我想知道输入scanf(%c,a[i...
putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。getchar函数的功能是从键盘上输入一个字符。 函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。printf 函数称为格式输出函数.一般形式为:printf(“格式控制字符串”,输出表列)scanf 函数在本质上也是...
C语言输出问题
;printf("<\/PRE><\/BODY><\/HTML>\\n");} 把上面的程序存为a.c 编译后得a.exe 在DOS窗运行 a.exe > aaa.html 用IE浏览aaa.html 可看到4个全角竖线.全角竖线GB2312-1980国标码值0xa3fc. 程序用 putwchar(a[0]);putwchar(a[1]); 输出 如果用unicode,UTF-8,编码,需自己给相应的值....
C语言中printf输出问题
printf("%d\\n",1); =>打印出来是:整型数1 printf("%d\\n",'1');=》字符‘1’所对应ASCII为49 输出数据不一样
问个C语言输出问题 printf("%5.3f\\n",123456.12345);输出为多少? 请讲 ...
5.3f 就是输出5位,其中小数点占3位,当时你后面的数值整数部分已经就超过了5位,那么他就会整数部分原样输出,然后在输出小数点后3位,得到123456.123,\\n是回车的意思。
C语言输出问题 关于++i和i++
print是从右到左开始运算的,也就是按这个顺序来做i++,++i,i*=2。i++是后置自增运算,也就是先使用然后自己加一,所以i++这里的值为2,这个运算做完之后,因为自增所以i=3,而++i是前置自增运算,是使用之前加一,所以++i的值就为4,然后进行i*=2,所以i就等于8,最后结果应该是8 4 2 ...
C语言中,printf("%s.%s", s1,s2); 这样写,为什么输出在屏幕上·变成了...
可能字符串中有这个符号,或者是没有在结尾加"\\0"
C语言输出二进制文件的问题
1、打开编译器,Ctrl+N新建一个文件;2、输入如下程序 include <stdio.h> include <stdlib.h> int main(){ int a;char b[100];scanf("%d",&a);itoa(a,b,2);printf("%s",b);} 3、按F9编译 4、按F5运行程序输入想要转化的数字即可,完成。
c语言中%f的的输入输出问题
计算机内部用2进制。输入17.8,计算机内化为2进制时化不净,所以自动丢去尾数,从而引入了“截断误差”,输出时,再化回10进制,就看出“截断误差”。printf("%.4f\\n",a); \/\/ 考虑精度,输出有限小数位,就好了。printf("%g\\n",a); \/\/ 改用 %g 格式也可以。
用C语言编程输出高度问N的空心平行四边形
include <stdio.h>int main(){ int N,i,p,j; printf("Input N:"); scanf("%d",&N); for(i=1;i<=N;++i){ for(j=0;j<(N-i);++j){ putchar('\\0'); } if(i==1 || i==N){ for(p=0;p<N;++p){ putchar('*'); } }else...
C语言char型输入输出问题
include <stdio.h> include <conio.h> include <string.h> int main(void){ int a, b, c;char x, y, z;scanf("%d%d%d", &a, &b, &c);printf("%d%d%d\\n", a, b, c);scanf("\\n%c%c%c", &x, &y, &z);\/\/\/这样之后看看,,,因为在输入流中"\\n"被按照字符读入了...
地钢二叶: #include void main() { int a=3,b=2; int x,c; printf("c=%d\n",(scanf("%d",&x),x)?a+b:a-b); } 我意思是这样,x为非0,则从C=a+b,x为0,c=a-b
二道区13339633418: 请问: c语言输出问题 - ?
地钢二叶: 1、比如输入3,∵a的初始值为0∴所以第一次进行for循环时,a++*2,就是a先乘以2,然后a再+1,输出一个0以此类推,第二次for循环的时候 a=1 ,a*2=2 输出一个2第三次for循环的时候 a=2 ,a*2=4 输出4,∴最后输出024而不是24.2、在%d左边或者右边输入空格数目不同,得数之间一定会有字符间距的差异的,因为在C语言中,空格也当字符处理,看看ASCII码表就能找到032是空格回车,ASCII码13换行,ASCII码10空格,ASCII码32参考资料http://wenku.baidu.com/view/e6ea6bce0508763231121258.html
二道区13339633418: 关于c语言输出问题?
地钢二叶: char a=179; 1.在C语言中char 的范围是-128~+127;输入176也就是它的补码为-80 2.由于中文字占两个字节,连续输出%c%c就是中文字码,相关中文码去查相关资料 3.在C++有专用的宽字节类型,如 wchar_t wt[]=L"郯" 4.研究的精神可佳,但是作用新手没必要去研究越界值后的效果,只保证你自己在学的过程中不会有错就OK,否浪费大量时间! 祝你好运!
二道区13339633418: 简单的C语言输出问题 - ?
地钢二叶: 输出格式控制的匹配顺序是从左向右匹配,所以%%d是先匹配%%,%%的作用是输出一个'%...
二道区13339633418: 关于C语言的文件输出问题(简单)急!!!!!!!!!! - ?
地钢二叶: 你在去创建一个函数 假定设为 void print(PLINK p) { FILE *fp; PLINK p1; p1=p; if((fp=fopen("d:\\职工信息.txt","w"))==NULL) { printf("can't find the file!\n"); exit(0); } if(p==NULL) printf("sorry .\n"); elsedo { fprintf(fp,"%s\t%s\t%s\t%d\t%s\t...
二道区13339633418: 一个关于C语言文件输出的程序问题 - ?
地钢二叶: #include "stdio.h" main() { FILE *fp; float a,b,c; int count = 0; float temp; fp = fopen("1.txt","r"); if (fp == NULL) { printf("open file error!\n"); } while (!feof(fp)) { fscanf(fp,"%f",&temp); ++count; if (count == 2) { a = temp; } else if (count == 4) ...
二道区13339633418: C语言中关于文件的输入输出 - ?
地钢二叶: 如果你不是用Tc的话,可以直接将文件放到工程根目录下,否则要放到.exe文件生成的目录.如果你是运行.exe文件的话,要将文件和.exe放到同一目录下.其实你只要注意代码里面指定的相对或者绝对路径和需要的文件路径相同就行了.
二道区13339633418: [C语言] 关于文件的输入和输出的基础问题.万分感谢!!! - ?
地钢二叶: 呵呵,“为了输入数据”是说:从已存在的文本文件中以只读的方式读取文件中存在的数据,然后将读取的数据输入到程序的接收变量中~ 在文件操作中,文件是输出端,即相当于屏幕或者外界存贮设备,读入是相对程序而言,写入才是针对文件的
二道区13339633418: c语言,向文件输出的问题(fputc函数) - ?
地钢二叶: #include "stdio.h" main() { char c; FILE *fp; if((fp=fopen("aaaaaaaaa.txt","a+"))==NULL) ////你没标明哪个盘?{ puts("cannot open the file !"); exit(0); } c=fgetc(fp); while (c!='\n') /////////从此陷入死环.因:要是你盘上没有aaaaaa.txt,则建...
二道区13339633418: C语言关于文件输入输出的 - ?
地钢二叶: rewind是用来重置fp的位置的,因为你执行了写入操作,位置指针就移到写入的字符串之后了,执行rewind后,这个位置恢复到文件头,即0的位置.