पूर्णांक इनपुट के लिए आप ऐसा कर सकते हैं।
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]);
}
हम अभी तक स्ट्रेटोक का उपयोग नहीं करते हैं, इसलिए मुझसे सवाल किया जा सकता है कि मैं इसका उपयोग क्यों कर रहा हूं। यह पूर्णांक इनपुट पर काम कर रहा है, इसलिए मैं सोच रहा हूं कि क्या स्ट्रिंग इनपुट को स्वचालित रूप से अलग करना संभव है। तो मुझे लगता है कि मुझे 1 से 1 तब स्ट्रिंग इनपुट पढ़ना होगा।
2 जवाब
% 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;
}