sscanf() फ़ंक्शन
यह फ़ंक्शन एक कैरेक्टर स्ट्रिंग से डेटा पढ़ता है।
सिंटैक्स
sscanf(string, format_specifier, &var1, &var2, ...);
- string: वह कैरेक्टर स्ट्रिंग जिससे पढ़ना है
- format_specifier: फॉर्मेटिंग जानकारी वाला स्ट्रिंग
- var1, var2: इनपुट डेटा आइटम के लिए चर
उदाहरण
sscanf(str, "%d:%d", &hours, &minutes); // "12:30" से घंटे और मिनट पढ़ें
sprintf() फ़ंक्शन
यह फ़ंक्शन डेटा को एक कैरेक्टर स्ट्रिंग में लिखता है (कंसोल पर प्रिंट करने के बजाय)।
सिंटैक्स
sprintf(string, format_specifier, var1, var2, ...);
- string: वह कैरेक्टर सरणी जहां आउटपुट संग्रहीत होगा
- format_specifier: फॉर्मेटिंग जानकारी
- var1, var2: आउटपुट करने के लिए डेटा आइटम
उदाहरण
char buffer[100];
sprintf(buffer, "2 का घन %d है और वर्ग %d है", 2*2*2, 2*2);
// buffer में: "2 का घन 8 है और वर्ग 4 है"
उदाहरण 1: sscanf() - स्ट्रिंग पार्सिंग
#include <stdio.h>
int main() {
char input[] = "Tutorials Point";
char word1[20], word2[20];
// स्ट्रिंग से दो शब्द निकालें
sscanf(input, "%s %s", word1, word2);
printf("पहला शब्द: %s\n", word1);
printf("मूल स्ट्रिंग: %s\n", input);
return 0;
}
आउटपुट
पहला शब्द: Tutorials
मूल स्ट्रिंग: Tutorials Point
उदाहरण 2: sprintf() - फॉर्मेटेड स्ट्रिंग बनाना
#include <stdio.h>
int main() {
char result[100];
int a = 20, b = 30, sum;
sum = a + b;
// फॉर्मेटेड स्ट्रिंग बनाएं
sprintf(result, "दो संख्याएं %d और %d जोड़ने पर परिणाम %d होता है", a, b, sum);
printf("%s\n", result);
return 0;
}
आउटपुट
दो संख्याएं 20 और 30 जोड़ने पर परिणाम 50 होता है
व्यावहारिक उपयोग के मामले
1. sscanf: कॉन्फ़िगरेशन स्ट्रिंग पार्स करना
char config[] = "server=192.168.1.1 port=8080 timeout=30";
char server[20];
int port, timeout;
sscanf(config, "server=%s port=%d timeout=%d", server, &port, &timeout);
printf("सर्वर: %s, पोर्ट: %d, टाइमआउट: %d\n", server, port, timeout);
2. sprintf: डायनामिक SQL क्वेरी बनाना
char query[200];
int id = 101;
char name[] = "राहुल";
float salary = 50000.0;
sprintf(query, "INSERT INTO employees VALUES (%d, '%s', %.2f)", id, name, salary);
printf("क्वेरी: %s\n", query);
3. sprintf: फ़ाइल नाम जनरेट करना
char filename[50];
for (int i = 1; i <= 5; i++) {
sprintf(filename, "log_%03d.txt", i); // log_001.txt, log_002.txt...
printf("%s\n", filename);
}
सावधानियां
- बफर ओवरफ्लो:
sprintfगंतव्य बफर आकार की जांच नहीं करता। सुरक्षित विकल्प:snprintf(buffer, size, format, ...) sscanfरिटर्न मान देता है: सफलतापूर्वक पढ़े गए आइटम की संख्या, या EOF- दोनों फ़ंक्शन
stdio.hमें घोषित हैं
तुलना तालिका
| फ़ंक्शन | दिशा | उपयोग | सुरक्षित विकल्प |
|---|---|---|---|
| sprintf | मेमोरी → स्ट्रिंग | फॉर्मेटेड स्ट्रिंग बनाना | snprintf |
| sscanf | स्ट्रिंग → मेमोरी | स्ट्रिंग पार्स करना | - |
| printf | मेमोरी → कंसोल | स्क्रीन पर प्रिंट | - |
| scanf | कंसोल → मेमोरी | उपयोगकर्ता इनपुट | - |