मैंने इस पर जानकारी के लिए थोड़ी सी खोज की लेकिन मुझे कुछ भी संतोषजनक नहीं मिला। क्या फंक्शन कॉलजीसीसी -Wall शून्य-लंबाई प्रारूप स्ट्रिंग के बारे में चेतावनी क्यों देता है?
sprintf(someString, "");
में कुछ विशेष व्यवहार है जो बताता है कि यह चेतावनी क्यों है (gcc पर -Wall पर)? मैं केवल यह पाया कि सी मानक शून्य-लंबाई प्रारूप तारों की अनुमति देता है।
मैं निम्न उदाहरण
#include <stdio.h>
int main()
{
char str[2] = {'a', 'a'};
sprintf(str, "");
printf("\'%c\'\'%c\'\n", str[0], str[1]);
return 0;
}
जो
'''a'
बाहर प्रिंट जो वास्तव में क्या मैं देख रहा हूँ के लिए उम्मीद की कोशिश की। तो, चेतावनी क्यों?
मुझे यह नहीं मिलता है कि आपको यह कहां मिल गया है कि C++ नहीं है ... –
आप सही हैं, मैंने सोचा था कि यह पहली बार था क्योंकि मैं g ++ के साथ कोड संकलित कर रहा था, लेकिन अब मुझे लगता है कि जीसीसी देता है एक ही चेतावनी। – SirGuy
ओह, और यदि कोई सोच रहा है, तो मैंने गलती से इस कोड में ठोकर खाई, मैंने वास्तव में इसे खुद को – SirGuy