जब मैं एक साथ सी में एक टू-बड़े समारोह डाल रहा था ++ मैंने देखा है कि मैं सी स्ट्रिंग सी में अपरकेस में और सी ++
सी ++ समारोह सी
में अपेक्षित आउटपुट प्राप्त नहीं किया#include <iostream>
#include <cctype>
#include <cstdio>
void strupp(char* beg)
{
while (*beg++ = std::toupper(*beg));
}
int main(int charc, char* argv[])
{
char a[] = "foobar";
strupp(a);
printf("%s\n", a);
return 0;
}
आउटपुट के रूप में उम्मीद:
FOOBAR
सी समारोह
#include <ctype.h>
#include <stdio.h>
#include <string.h>
void strupp(char* beg)
{
while (*beg++ = toupper(*beg));
}
int main(int charc, char* argv[])
{
char a[] = "foobar";
strupp(a);
printf("%s\n", a);
return 0;
}
उत्पादन पहले वर्ण लापता
OOBAR
क्या किसी को पता है कि क्यों परिणाम है, जबकि सी में संकलन छोटा कर दिया जाता है के साथ अपेक्षित परिणाम है?
और यदि आप वास्तव में इसे 'सी ++' में करना चाहते हैं: 'std :: transform (a, a + strlen (ए), ए, std :: toupper); ' – PaulMcKenzie
क्या आप समझा सकते हैं कि आप स्ट्रिंग को अपरकेस में बदलने के लिए क्यों उम्मीद करते थे? विशेष रूप से, आपने बाईं ओर से '=' का मूल्यांकन करने के लिए सही पक्ष की अपेक्षा क्यों की थी? –
मैं उन सभी लोगों का आभारी हूं जिन्होंने फीडबैक दिया और मूल्यवान जानकारी प्रदान की गई –