对于整数输入,您可以这样做。
for (int i = 0; i < count; i++) {
scanf("%d,", &storage[i]);
}
有没有办法读取用逗号分隔的字符串输入?例。 string1,string2,string3
下面似乎没有用,或者我错过了什么?
for (int i = 0; i < count; i++) {
scanf("%s,", storage[i]);
}
我们还没有使用过strtok,所以我可能会质疑为什么要使用它。 它正在处理整数输入,所以我想知道字符串输入是否也可以自动分离它们。 所以我想我必须逐个读取字符串输入。
答案 0 :(得分:2)
%s也会吃掉你的分隔符(,)。
为避免这种情况,您可以使用扫描设置。
scanf(" %[^,\n],", word);
扫描集之前的空格是为了避免单词之前的任何空格。你的单词可能以换行符或逗号结尾。
编辑:
%[^
和]
之间的任何字符都表示cstring的结尾。在这里,我们得到了逗号(,
)和换行符(\n
)。所以,%[^,\n]
读取了我们想要的字符串。现在,输入后可能包含,
。 ,
旁边的%[^,\n]
会从输入中丢弃它,就像在示例中有关整数一样。
答案 1 :(得分:0)
#include<iostream>
#include<math.h>
using namespace std;
int getnum(string s,int j,int k)
{
int len=s.length();
int l=j-k;
int num=0;
for(int i=k;i<=j;i++)
{
if(s[i]==',' )
{
num+=(s[i]-'0')*pow(10,l);
}
else
{
num+=(s[i]-'0')*pow(10,l);
l--;
}
}
return num;
}
int main()
{
int n;
cin>>n;
int a[10];
int m=0;
string s;
cin>>s;
int len=s.length();
static int f=0,j=0,i,k=0;
int num[n];
for(i=0;i<=len;i++)
{
if(s[i]==','|| i==len)
{
if(k==0)
{
num[f]=getnum(s,j-1,k);
}
else
{
num[f]=getnum(s,j-1,k);
}
f++;
k=i+1;
j=i+1;
continue;
}
else
{
j++;
continue;
}
}
for(int i=0;i<f;i++)
{
cout<<num[i]<<endl;
}
return 0;
}