您的位置:首页 > 编程语言 > C语言/C++

关于在C/C++中对于输入以换行结束的一些问题

2016-03-13 21:45 375 查看
这两天在做一些OJ的题,题目一般都会要求测试的数据有很多组,每组都是一行,但是如果不是所有的测试数据输入完成的话,那么用(scanf(“%d”,&data)!= EOF)是没办法判断一行数据输入完成的,我还为此很纠结。cin 和scanf的输入我自己试了之后一直没解决这个问题。之后在博主:

吃苹果阿 里面看到一道题目的做法,瞬间感觉到好像问题解决了。对于一组测试数据(一行数组),他的解决办法是:先将整个一行数组作为字符串读入,之后再用一个函数将字符串转为数组。实际代码如下:

<pre class="cpp" name="code">int* ChangeToInt(char* s)
{
int len = strlen(s);
int flag = 1;
int temp = 0;
int a[21];
int n = 0;
for (int i = 0;i < len;i++)
{
if (s[i] == '-')
flag = -1;
else if (s[i] == ' ')//a data is over
{
if (flag == -1)
temp = temp*flag;
a[n++] = temp;
flag = 1;
temp = 0;
}
else
temp = temp * 10 + (s[i] - '0');
}
//最后一个数字处理
if (flag == -1)
temp = flag*temp;
a[n++] = temp;
return a;
}

当然,在 java里面有一个函数Split(‘ ’)是可以把数组直接分开的。但是可以了解了解这个内在的实现还是很好的。又解决了一个问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: