请教怎样分情况读取两个不同的数据类型?
比如说:
输入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




