一道C语言题目,
一道C语言题目,在线等.....
使用标准C语言和标准C语言库,编写一个打印文件内容到屏幕的函数。(写出思路即可)
文件名:c:\example.txt,文件内容是中英文混排。
文件操作函数:
1. 打开文件
FILE *fopen(const char *filename,const char *mode);
2. 读文件数据
size_t fread(void *buffer, size_t size, size_t count,FILE *stream);
3. 关闭文件
int fclose(FILE *stream);
4. 打印
int printf(const char *format[,argument]...);
编码格式:
1. 一个汉字占2个Byte,高字节在前,其中每个Byte的bit7为1;
2. 一个英文字符占1个Byte,其值小于0x80。
要求:
一次只能从文件中读取1024个Byte(不能多也不能少)。
请写出程序,然后,附带你准备怎么测试才能保证自己程序是强壮的。要注意各种特殊
情况的处理。
------解决方案--------------------
FILE *fp=fopen( "c:\example.txt ", "r ");
char buffer[1024];
while(!feof(fp))
{
fread(buffer, 1024, 1, fp);
...
}
------解决方案--------------------
事实上,
由于只是输出文件内容,
甚至可以不需要考虑是什么字符,
直接输出即可
【即是是半个汉字字符,后面半个也会在下一次操作中读取并输出,从而得到正确的结果】:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp=fopen( "c:\\example.txt ", "rb ");
char buffer[1024];
int count;
count = fread(buffer, 1, 1024, fp);
while(count==1024)
{
printf( "%s ", buffer);
count = fread(buffer, 1, 1024, fp);
}
buffer[count]= '\0 ';
puts(buffer);
system( "PAUSE ");
return 0;
}
------解决方案--------------------
while(!feof(fp))
{
fread(buffer, 1024, 1, fp);
...
}
当文件以空行结束,最后可能会输出文件中的最后一个字符两次
应该用while(!feof(fp))
{
int size = fread(buffer, 1, 1024, fp);
buffer[size] = '\0 ';
printf( "%s ", buffer);
}
------解决方案--------------------
楼上说的不错 ,lz 这么用就行了
------解决方案--------------------
JF
------解决方案--------------------
up
------解决方案--------------------
jf
------解决方案--------------------
靠分全给虫子不甘心啊
mark一下
使用标准C语言和标准C语言库,编写一个打印文件内容到屏幕的函数。(写出思路即可)
文件名:c:\example.txt,文件内容是中英文混排。
文件操作函数:
1. 打开文件
FILE *fopen(const char *filename,const char *mode);
2. 读文件数据
size_t fread(void *buffer, size_t size, size_t count,FILE *stream);
3. 关闭文件
int fclose(FILE *stream);
4. 打印
int printf(const char *format[,argument]...);
编码格式:
1. 一个汉字占2个Byte,高字节在前,其中每个Byte的bit7为1;
2. 一个英文字符占1个Byte,其值小于0x80。
要求:
一次只能从文件中读取1024个Byte(不能多也不能少)。
请写出程序,然后,附带你准备怎么测试才能保证自己程序是强壮的。要注意各种特殊
情况的处理。
------解决方案--------------------
FILE *fp=fopen( "c:\example.txt ", "r ");
char buffer[1024];
while(!feof(fp))
{
fread(buffer, 1024, 1, fp);
...
}
------解决方案--------------------
事实上,
由于只是输出文件内容,
甚至可以不需要考虑是什么字符,
直接输出即可
【即是是半个汉字字符,后面半个也会在下一次操作中读取并输出,从而得到正确的结果】:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp=fopen( "c:\\example.txt ", "rb ");
char buffer[1024];
int count;
count = fread(buffer, 1, 1024, fp);
while(count==1024)
{
printf( "%s ", buffer);
count = fread(buffer, 1, 1024, fp);
}
buffer[count]= '\0 ';
puts(buffer);
system( "PAUSE ");
return 0;
}
------解决方案--------------------
while(!feof(fp))
{
fread(buffer, 1024, 1, fp);
...
}
当文件以空行结束,最后可能会输出文件中的最后一个字符两次
应该用while(!feof(fp))
{
int size = fread(buffer, 1, 1024, fp);
buffer[size] = '\0 ';
printf( "%s ", buffer);
}
------解决方案--------------------
楼上说的不错 ,lz 这么用就行了
------解决方案--------------------
JF
------解决方案--------------------
up
------解决方案--------------------
jf
------解决方案--------------------
靠分全给虫子不甘心啊
mark一下