unicode - C: sscanf problem -
मेरी इस तरह एक टेक्स्ट फाइल है:
2
ए 10 5
बी 31 2
सी 6 6
मैं एक चर में पहली पंक्ति संख्या पढ़ना चाहता हूँ - और प्रत्येक पंक्ति के स्पेस से 3 सेल्स में 3 वैरिएबल की सूची पढ़ा। मैंने यह कोड लिखा है:
iF = fopen (फ़ाइलनाम, "आर"); fgets (tmp, 255, तो); sscanf (tmp, "% d", & amp; अंतराल); जबकि (! फीफ (iF)) {cur = (P *) मॉलोक (आकारफ (पी)); fgets (tmp, 255, तो); Sscanf (टीएमपी, "% सी% डी% d", और नाम, और एटी, और एट); चालू & gt; jobName = नाम; चालू & gt; arrivalTime = एटी; चालू & gt; execTime = एट; ADD_TO_LIST (सिर, CUR); }
यह लाइन 1,3,4 के लिए ठीक से काम करता है, लेकिन पंक्ति 2 के लिए नहीं! 2 लाइन में यह कुछ भी स्टोर करता है! जैसा कि मैंने डीबगर में जांच की है, कुछ अजीब अक्षर फ़ाइल (\ 342 \ 200 \ 252) में हैं और मैं नहीं जानता कि वे कहां से हैं!
समस्या क्या है?
धन्यवाद
हम्म ... मुझे आखिरी रेखा, लेकिन आप यह नहीं देख पाते हैं कि आपको कहीं और समस्या क्यों होनी चाहिए। ओटोह, कम से कम जब मैं स्पष्ट रूप से समस्या का समाधान करता हूं कि आप फ़ाइल के अंत का पता लगा रहे हैं, तो यह मेरे लिए ठीक काम करता है:
#include & lt; stdio ज & gt; # शामिल करें & lt; stdlib.h & gt; Typedef struct पी {char jobName; इं आगमन समय; Int execTime; } पी; शून्य show_P (P const * r) {printf ("नाम:% c, आगमन समय:% d, समय निष्पादित करें:% d \ n", r- & gt; नौकरीनाम, r- & gt; आगमनटाइम, आर- & gt; निष्पादित समय) ; } Int main () {int interval; चार नाम; इंट एटी, ईटी; चार टीएमपी [256]; FILE * if = fopen ("stupid_input.txt", "r"); fgets (tmp, 255, तो); sscanf (tmp, "% d", & amp; अंतराल); जबकि (एफजीटीएस (टीएमपी, 255, आईएफ़)) {पी * क्यू = मॉलोक (आकारफ (पी)); Sscanf (टीएमपी, "% सी% डी% d", और नाम, और एटी, और एट); चालू & gt; jobName = नाम; चालू & gt; arrivalTime = एटी; चालू & gt; execTime = एट; show_P (CUR); } वापसी 0; }
परिणाम:
नाम: ए, आगमन का समय: 10, निष्पादन समय: 5 नाम: बी, आगमन का समय: 31, निष्पादन समय: 2 नाम: सी, आगमन का समय: 6, निष्पादन समय: 6
Comments
Post a Comment