ج التوافق بين الاعداد الصحيحه و الشخصيات

StackOverflow https://stackoverflow.com/questions/144134

  •  02-07-2019
  •  | 
  •  

سؤال

كيف ج مقبض تحويل بين الاعداد الصحيحه و الشخصيات ؟ نقول لكم لقد أعلن متغير عدد صحيح و تسأل المستخدم عن عدد لكنهم إدخال سلسلة بدلا من ذلك.ماذا سيحدث ؟

هل كانت مفيدة؟

المحلول

إدخال المستخدم هو تعامل سلسلة يحتاج إلى تحويلها إلى int باستخدام atoi أو آخر وظيفة التحويل.Atoi سيعود 0 إذا كانت السلسلة لا يمكن interptreted وعدد لأنه يحتوي على أحرف أو أحرف غير رقمية أخرى.

يمكنك أن تقرأ أكثر قليلا في atoi وثائق MSDN http://msdn.microsoft.com/en-us/library/yd5xkb5c(مقابل.80).aspx

نصائح أخرى

؟ كنت دائما إدخال سلسلة.ثم تحليل تحويل هذه السلسلة إلى عدد طرق مختلفة (يسأل مرة أخرى ، مع قيمة افتراضية ، إلخ.) التعامل مع الأخطاء المختلفة (تجاوز غير صحيحة حرف ، إلخ.).

شيء آخر هو أن نلاحظ أنه في ج والشخصيات الصحيحه هي "متوافقة" إلى حد ما.أي حرف يمكن أن تسند إلى int.عكس يعمل أيضا, ولكن سوف تفقد المعلومات إذا كانت قيمة عدد صحيح لا يصلح في شار.

char foo = 'a'; // The ascii value representation for lower-case 'a' is 97
int bar = foo; // bar now contains the value 97 
bar = 255; // 255 is 0x000000ff in hexadecimal
foo = bar; // foo now contains -1 (0xff) 
unsigned char foo2 = foo; // foo now contains 255 (0xff)

وغيرها من الناس قد لاحظ البيانات عادة دخلت كسلسلة -- والسؤال الوحيد هو الذي يتم استخدام الدالة على فعل القراءة.إذا كنت تستخدم واجهة المستخدم الرسومية ، وظيفة قد تتعامل مع التحويل إلى عدد صحيح و الإبلاغ عن الأخطاء و ذلك بطريقة مناسبة.إذا كنت تعمل مع معيار C, أنه من الأسهل عموما قراءة قيمة إلى سلسلة (ربما مع fgets() ومن ثم تحويل.على الرغم من أن atoi() يمكن استخدامها ، فإنه نادرا ما أفضل خيار ؛ المشكلة هي تحديد ما إذا كان التحويل نجح (وأنتجت صفر لأن المستخدم دخل شرعية تمثيل صفر) أو لا.

عموما, استخدام strtol() أو أحد الأقارب (strtoul(), strtoll(), strtoull());لتحويل أرقام النقطة العائمة, استخدام strtod() أو وظيفة مماثلة.الاستفادة من عدد صحيح إجراءات التحويل تشمل:

  • اختياري قاعدة الاختيار (على سبيل المثال, قاعدة 10 أو قاعدة 10 - عرافة ، أو قاعدة 8 - ثماني أو أي من أعلاه باستخدام معيار ج الاتفاقيات (007 لمدة ثماني, 0x07 عرافة, 7 عشري).
  • اختياري اكتشاف الخطأ (من خلال معرفة أين تحويل توقف).

مكان أذهب العديد من هذه الوظيفة المواصفات (عندما لا تبدو في نسختي الفعلية ج القياسي) هو POSIX موقع على شبكة الإنترنت (والتي تشمل C99 الوظائف).هو Unix مركزية بدلا من ويندوز مركزية.

البرنامج الحادث ، تحتاج إلى استدعاء الدالة atoi.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top