CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

请教怎样分情况读取两个不同的数据类型?

楼主martinlining(帅宁)2003-10-01 14:31:21 在 C/C++ / C++ 语言 提问

比如说:  
  输入p    
  输出0  
   
  输入p   123    
  输出123  
   
  输入p   13  
  输出13  
   
  怎样把两个不同类型的数据读取进来   (scanf("%c%d")好像不行,因为有的时候可能只输入一个p   后面不跟任何数值,这样的话,会有错误信息)。  
  要求是把输入存入一个array里,然后用指针读取。请各位高手帮忙啊。 问题点数:0、回复次数:11Top

1 楼Januarius_(努力学习J2EE中)回复于 2003-10-01 14:35:26 得分 0

可以读入一行,然后根据空格分段Top

2 楼martinlining(帅宁)回复于 2003-10-01 14:38:32 得分 0

怎么根据空格分段哪?Top

3 楼martinlining(帅宁)回复于 2003-10-01 15:02:29 得分 0

能讲的详细一点吗?Top

4 楼gkisme(Fighting Dreamer)回复于 2003-10-01 15:53:07 得分 0

就是遍历数组,遇到空格就说明开始读取另一种数据了。Top

5 楼martinlining(帅宁)回复于 2003-10-01 16:03:48 得分 0

能把怎么“遍历数组,遇到空格就说明开始读取另一种数据”这一段写出来吗?   谢谢Top

6 楼gkisme(Fighting Dreamer)回复于 2003-10-01 16:19:59 得分 0

其实有更简单的方法,就是根据ASCII码判断,不需空格也可以分出来Top

7 楼martinlining(帅宁)回复于 2003-10-01 16:21:41 得分 0

能举例写一段代码Top

8 楼TianGuangZao(天光早)回复于 2003-10-01 16:40:44 得分 0

#include   <stdio.h>  
   
  int   main()  
  {  
                  char   str[10];  
                  printf   ("Input   two   data,   one   charater,   another   integer:   ");  
                  fgets   (str,   10,   stdin);  
   
                  char   a;   int   i;  
                  sscanf   (str,"%c   %d",&a,&i);  
   
                  printf   ("\n%c   %d\n",   a,   i);  
   
                  return   0;  
  }Top

9 楼steedhorse(晨星)回复于 2003-10-01 17:33:52 得分 0

我建议显示用cin.getline把整行输入都读进来,然后自己对一行输入爱怎么解析怎么解析。Top

10 楼xoom3307(C语言信徒)回复于 2003-10-01 17:41:16 得分 0

支持楼上!Top

11 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2003-10-01 20:02:59 得分 0

/*   以下代码在VC.net环境下编译通过,并正常运行   */  
  /*   Creamdog保留此代码之所有权力                               */  
  #include   <string>  
  #include   <iostream>  
  using   namespace   std;  
  int   GetNumber(   void   )  
  {  
  string   str;  
  getline(   cin,   str   );  
  size_t   nStart   =   str.find_first_not_of(   '   '   );  
  nStart   =   str.find_first_of(   '   ',   nStart   );  
  if   (   string::npos   ==   nStart   )  
  return   0;  
  nStart   =   str.find_first_not_of(   '   ',   nStart   );  
  if   (   string::npos   ==   nStart   )  
  return   0;  
  size_t   nEnd   =   str.find_first_of(   '   ',   nStart   );  
  if   (   string::npos   !=   nEnd   )  
  nEnd   -=   nStart;  
  str   =   str.substr(   nStart,   nEnd   );  
  return   atoi(   str.c_str()   );  
  }  
  void   main(   void   )  
  {  
  cout   <<   GetNumber()   <<   endl;  
  system(   "pause"   );  
  }  
   
  Top

相关问题

  • 如何读取、写入数据库中Memo类型的数据?
  • 从数据库中读取日期类型数据的问题
  • 关于数据类型的大小和读取
  • ADO读取IMAGE类型数据的问题
  • 读取sybase里的text类型数据读不出来,急呀
  • 关于读取TXT类型的数据文件
  • php读取mssql中的datetime数据类型出问题了。
  • 读取excel列的数据类型有怪现象
  • ACCESS中的文本类型数据在PB中如何读取?
  • 如何从文件里读取double类型的数据?

关键词

  • 数据
  • nstart
  • c%d
  • 读取
  • 输入
  • nend
  • 输出
  • 空格
  • npos
  • str

得分解答快速导航

  • 帖主:martinlining

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo