[英]Read string separated by comma
对于整数输入,您可以执行此操作。
for (int i = 0; i < count; i++) {
scanf("%d,", &storage[i]);
}
有没有办法读取以逗号分隔的字符串输入呢? 例。 字符串1,字符串2,字符串3
以下似乎无法正常工作,或者我错过了一些东西吗?
for (int i = 0; i < count; i++) {
scanf("%s,", storage[i]);
}
我们还没有接触到使用strtok,所以可能会问我为什么使用它。 它正在整数输入上工作,所以我想知道是否也可以将字符串输入自动分离。 因此,我想我必须一一读取字符串输入。
%s也吃了您的分隔符(,)。
为避免这种情况,您可以使用扫描集。
scanf(" %[^,\n],", word);
扫描集之前的空格是为了避免单词之前有任何空格。 您的单词可能以换行符或逗号结尾。
编辑:
%[^
和]
之间的任何字符都将表示cstring的结尾。 在这里,我们得到了逗号( ,
)和换行符( \\n
)。 因此, %[^,\\n]
读取了我们想要的字符串。 现在,输入可以包含,
之后它。 的,
旁边%[^,\\n]
从输入像它在你对整数例如没有将其丢弃。
#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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.