printf()
"INF" प्रिंट एक कदम में ओ पी के लक्ष्य को पूरा नहीं करेगा कुछ विशेष प्रारूप का उपयोग होगा। प्रारंभिक पाठ परिणाम बनाने के लिए sprintf()
का उपयोग करना एक अच्छा पहला कदम है, स्ट्रिंग मैनिपुलेशन के साथ "गणित" करने का प्रयास करते समय देखभाल का उपयोग किया जाना चाहिए।
Akin से @user3121023 हटाया गया उत्तर।
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
int printf_NoIntegerPart(double x, int prec) {
assert(prec >= 2 && prec <= 100);
char buffer[prec + 16]; // Form a large enough buffer.
sprintf(buffer, "%.*E", prec - 1, x);
int dp = '.'; // Could expand code here to get current local's decimal point.
char *dp_ptr = strchr(buffer, dp);
char *E_ptr = strchr(buffer, 'E');
// Insure we are not dealing with infinity, Nan, just the expected format.
if (dp_ptr && dp_ptr > buffer && E_ptr) {
// Swap dp and leading digit
dp_ptr[0] = dp_ptr[-1];
dp_ptr[-1] = dp;
// If x was not zero …
if (x != 0) {
int expo = atoi(&E_ptr[1]); // Could use `strtol()`
sprintf(&E_ptr[1], "%+.02d", expo + 1);
}
}
return puts(buffer);
}
int main(void) {
printf_NoIntegerPart(2.74600E+02, 5); // ".27460E+03"
return 0;
}
मुझे इसे पुराने किले के निष्पादन योग्य – avances123
पर फ़ीड करने की आवश्यकता है टेक्स्ट मैनिपुलेशन जाने का तरीका प्रतीत होता है। आप लाइब्रेरी की खोज कर सकते हैं, लेकिन मेरा अनुमान है कि कोई भी इस तरह के अजीब प्रारूप का समर्थन नहीं करता है। –
https://www.google.com/search?q=c%2B%2B+print+fortran+format –