| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 471 人关注过本帖
标题:哪位学长能给解释一下?
只看楼主 加入收藏
hzc_13
Rank: 1
等 级:新手上路
帖 子:15
专家分:1
注 册:2012-1-31
结帖率:71.43%
收藏
已结贴  问题点数:12 回复次数:4 
哪位学长能给解释一下?
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main( void )
{
FILE *fp;
char words[ MAX ];
if( ( fp = fopen( "3.txt", "a+" ) ) == NULL ){
  fprintf( stderr, "The file opening failed!\n" );
  exit( EXIT_FAILURE );
}
else{
  while( gets( words ) != NULL && words[ 0 ] != '\0' )
   fprintf( fp, "%s", words );
  puts( "File contents:" );
  rewind( fp );
  while( fscanf( fp, "%s", words ) == 1 )
   puts( words );
  fclose( fp );
}
}

为什么我输入的是一行句子,输出却是单个单词??给讲讲原理,谢谢!
搜索更多相关主题的帖子: void 单词 contents include failed 
2012-05-06 20:12
ln6265431
Rank: 5Rank: 5
等 级:职业侠客
帖 子:66
专家分:325
注 册:2012-3-29
收藏
得分:4 
getS输入字符是以空格为结束标志的吧
2012-05-07 00:25
zouyunce
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2005-7-16
收藏
得分:4 
  while( fscanf( fp, "%s", words ) == 1 ) //这货是空字符结束的,换用fgets吧

2012-05-07 01:26
ab1034982749
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:215
专家分:1185
注 册:2012-4-14
收藏
得分:4 
首先看while( gets( words ) != NULL && words[ 0 ] != '\0' )这个,
因为当你输入句子时比如: I am a student. 由于gets()读入的是以空格结束读入的所以它一个一个读取字符,就是说其过程是这样的:
words="I"
把words写入文件
words="am"
把words写入文件
words="a"
把words写入文件
words="student"
把words写入文件。
然后:  while( fscanf( fp, "%s", words ) == 1 )
   puts( words );
当读取时,fscanf()也是以空格未结束  读取的,所以先读取"I",然后输出"I",他是一个单词一个单词的输出,而不是输出句子。

2012-05-07 12:54
hzc_13
Rank: 1
等 级:新手上路
帖 子:15
专家分:1
注 册:2012-1-31
收藏
得分:0 
非常感谢各位的热心帮助!!
2012-05-07 13:33
快速回复:哪位学长能给解释一下?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022262 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved