| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3831 人关注过本帖
标题:fscanf函数返回值的问题
只看楼主 加入收藏
钓鱼执法
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-17
结帖率:0
收藏
已结贴  问题点数:10 回复次数:6 
fscanf函数返回值的问题
#include<stdio.h>
#include<stdlib.h>
int main()
{
  char *s;
  while(fscanf(stdin,"%s",s)!=EOF)
    {
   
      printf("%s\n",s);
    }
  return 0;
}
我是想连续输入字符串并且输出,直到ctrl+d结束。请教一下我这么写为什么不行。谢谢大家
搜索更多相关主题的帖子: include return 字符串 
2015-01-17 11:41
孤狼1号
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2014-12-25
收藏
得分:3 
不能用指针,,指针赋值后不可修改,所以无法实现连续输入,,,可以用数组,,只需将char *s;改为char s[100];即可
2015-01-17 12:09
钓鱼执法
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-17
收藏
得分:0 
回复 2楼 孤狼1号
我猜 char *s;这个语句并没有给 s分配内存,所以不对。但是问题来了,如果我把语句改成char s[100]或者我用malloc 分配空间给s,但是一旦我输入的字符串超出了分配好的空间那又该怎么办?我输入了500个字符,char s[100]还对么?
2015-01-17 12:17
钓鱼执法
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-1-17
收藏
得分:0 
回复 2楼 孤狼1号
指针赋值后不能修改?指针也是变量如何不能改变值? 我估计我的错误是我忘了用malloc分配内存,当然改成数组形式也可以。
2015-01-17 12:21
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
收藏
得分:3 
以下是引用钓鱼执法在2015-1-17 12:17:37的发言:

我猜 char *s;这个语句并没有给 s分配内存,所以不对。但是问题来了,如果我把语句改成char s[100]或者我用malloc 分配空间给s,但是一旦我输入的字符串超出了分配好的空间那又该怎么办?我输入了500个字符,char s[100]还对么?

声明一个指针后,肯定先要给它赋值,要不然它就是个野指针,根本无法知道它指向哪块内存,这种情况下向它指向的内存区域存入数据,结果肯定是无法预料的,出错也就是理所当然的了。
第二个问题,如果你用scanf输入的字符串超出了分配好的空间,那就会产生溢出,结果通常也是无法预知的。建议用fgets函数,对于输入输出函数,《C和指针》一书中详解的很详细,建议找来看下。

[qq]949654600[/qq]
2015-01-17 14:14
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:3 
用字符数组能够实现

我不是砖家,要努力成为砖家。
2015-01-17 15:49
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int i = 0;
    char *pn = NULL, *p = calloc(1, sizeof(char));
    if(!p) exit(0);
    while((*(p + i) = getchar()) != EOF) {
        pn = realloc(p, (i + 2) * sizeof(char));
        if(!pn) exit(0);
        *(pn + i) = *(p + i);
        *(pn + ++i) = '\0';
        p = pn;
    }
    puts(p);
    free(p);
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-01-17 18:25
快速回复:fscanf函数返回值的问题
数据加载中...
 
   



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

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