प्रत्यक्ष प्रश्न का उत्तर देने के लिए, संभव स्वरूपित तारों को जोड़ने के लिए strcat
का उपयोग करने के लिए। तुम बस पहले स्वरूपित स्ट्रिंग का निर्माण करने के लिए है, और फिर आप इसे संलग्न करने के लिए strcat
उपयोग कर सकते हैं:
#include <stdio.h>
#include <string.h>
int main(void) {
char s[100];
char s1[20];
char s2[30];
int n = 42;
double x = 22.0/7.0;
strcpy(s, "n = ");
sprintf(s1, "%d", n);
strcat(s, s1);
strcat(s, ", x = ");
sprintf(s2, "%.6f", x);
strcat(s, s2);
puts(s);
return 0;
}
आउटपुट:
n = 42, x = 3.142857
लेकिन यह एक विशेष रूप से अच्छा तरीका नहीं है।
sprintf
एक मौजूदा स्ट्रिंग के अंत तक लिखने के साथ-साथ काम करता है।उदाहरण के लिए Mats's answer और mux's answer देखें। अलग-अलग क्षेत्रों को रखने के लिए उपयोग किए जाने वाले व्यक्तिगत सरणी आवश्यक नहीं हैं, कम से कम इस मामले में नहीं।
और चूंकि यह कोड स्ट्रिंग के अंत का ट्रैक नहीं रखता है, तो प्रदर्शन खराब होने की संभावना है। strcat(s1, s2)
को s1
को '\0'
को समाप्त करने के लिए पहले स्कैन करना होगा, और फिर इसमें s2
की सामग्री कॉपी करें। अन्य उत्तरों इसे किसी सूचकांक या पॉइंटर को आगे बढ़ाने के बिना स्ट्रिंग के अंत को ट्रैक रखने के लिए आगे बढ़कर इससे बचते हैं।
इसके अलावा, कोड बफर ओवररन्स से बचने के लिए कोई प्रयास नहीं करता है। strncat()
यह कर सकता है, लेकिन यह सिर्फ स्ट्रिंग को छोटा करता है; यह आपको नहीं बताता कि इसे छोटा कर दिया गया था। snprintf()
एक अच्छा विकल्प है; यह वर्णों की संख्या देता है कि लिखा होगा यदि पर्याप्त स्थान उपलब्ध था। यदि यह आपके द्वारा निर्दिष्ट आकार से अधिक है, तो स्ट्रिंग को छोटा कर दिया गया था।
/* other declarations as above */
size_t count;
count = snprintf(s, sizeof s, "n = %d, x = %.6f", n, x);
if (count > sizeof s) {
/* the string was truncated */
}
और कई तार (मान लीजिए, यदि कुछ सशर्त या बार-बार जोड़ दिए जाते हैं), तो आपको अन्य उत्तर में तरीकों लक्ष्य स्ट्रिंग के अंत का ट्रैक रखने के लिए उपयोग कर सकते संलग्न करने के लिए।
तो हां, स्वरूपित स्ट्रिंग को strcat()
के साथ जोड़ना संभव है। यह सिर्फ एक अच्छा विचार होने की संभावना नहीं है।
सुनिश्चित करें कि आपके पास पर्याप्त स्थान है। – SLaks