c语言中fscanf字符串,fprintf和fscanf_c语言字符串加数字_fscanf的返回值(3)

需要重点说明的是

在读取到 n-1 个字符之前如果出现了换行,或者读到了文件末尾,则读取结束。这就意味着,不管n的值多大,fgets() 最多只能读取一行数据,不能跨行。在C语言中,没有按行读取文件的函数,我们可以借助 fgets(),将n的值设置地足够大,每次就可以读取到一行数据。

示例:

#include

#include

#define N 100

int main(){

FILE *fp;

char str[N+1];

if( (fp=fopen("d:\\demo.txt","rt")) == NULL ){

printf("Cannot open file, press any key to exit!\n");

getch();

exit(1);

}

while(fgets(str, N, fp) != NULL){

printf("%s", str);

}

fclose(fp);

system("pause");

return 0;

}

将下面的内容复制到 D:\demo.txt:

C语言中文网一个学习编程的好网站!

那么运行结果为:

注意:

fgets() 遇到换行时,会将换行符一并读取到当前字符串。该示例的输出结果之所以和 demo.txt 保持一致,该换行的地方换行,就是因为 fgets() 能够读取到换行符。而 gets() 不一样,它会忽略换行符。

3.2写字符串函数fputs

(1)fputs() 函数用来向指定的文件写入一个字符串,它的原型为:

int fputs( char str, FILE fp );

(2)str 为要写入的字符串,fp 为文件指针。写入成功返回非负数,失败返回EOF。例如:

char *str = "http://c.biancheng.net";

FILE *fp = fopen("D:\\demo.txt", "at+");

fputs(str, fp);

表示把把字符串 str 写入到 D:\demo.txt 文件中。

示例:向上例中建立的 d:\demo.txt 文件中追加一个字符串。

#include

int main(){

FILE *fp;

char str[102] = {0}, strTemp[100];

if( (fp=fopen("D:\\demo.txt", "at+")) == NULL ){

printf("Cannot open file, press any key to exit!\n");

getch();

exit(1);

}

printf("Input a string:");

gets(strTemp);

strcat(str, "\n");

strcat(str, strTemp);

fputs(str, fp);

fclose(fp);

return 0;

}

运行程序,输入C C++ Java Linux Shell,打开 D:\demo.txt,文件内容为:

C语言中文网http://c.biancheng.net一个学习编程的好网站!C C++ Java Linux Shell

4.1fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取。如果希望读取多行内容,需要使用 fread 函数;相应地写入函数为 fwrite。

4.2fread() 函数用来从指定文件中读取块数据。所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-33283-3.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值