سؤال

أنا جديد في البرمجة C، لقد جئت من خلفية جافا. كنت أتساءل عن السبب في التعليمة البرمجية التالية، في الحلقة أثناء اكتب إدخال مدخلاتي عشر مرات، ثم يتم عرض جميع المدخلات العشرة. أحاول كتابة شيء ما مرة واحدة وبعد عرضه مباشرة بعد ذلك. ثم تابع كتابة مدخلاتي الأخرى.

#include <stdio.h>
#include <stdlib.h>
#include "Helper.h"


main(){

print(PROGRAM_INFO); //prints program name and author
print(PROMPT);

char input [100]; //array to hold input from user
int isActive = 1; //1 continue shell, 0 terminate shell
int count = 0;

while (isActive == 1 && count < 10){
    print(PROMPT);
    ++count;
    scanf("%s", input);
    print(input);


}


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

المحلول

حاول الاستيلاء fflush(stdout) بعد كل print(input)

نصائح أخرى

حاول وضع حرف " n" في الطباعة. التدفق فقط لا يتم مسحها.

بعد بيان الطباعة النهائي الخاص بك، ربما يمكنك استدعاء Fflush (Stdout)؛ لدغ Stdout للشاشة.

تحتاج إلى تدفق Stdout. fflush(STDOUT) يجب أن تفعل ذلك، أضاف بعد الطباعة.

يتم تخزين الإدخال / الإخراج الافتراضي بشكل افتراضي، أي يتم تخزين بايت الإدخال والإخراج في صفيف بايت قبل عرضه على الدفق.
Bufsiz in Systems عموما مضاعف 1024.Agh Fressf هو الخط المخزن مؤقتا، يتم مسح المخزن المؤقت تلقائيا عند مواجهة نيولين.
fflush (stdout) يؤدي إلى مسح البيانات المخزنة مؤقتا لإخراج الدفق الذي هو في هذه الحالة هو Stdout. يمكنك التحكم في التعامل مع المخزن المؤقت باستخدام setvbuf () وظيفة

لك print هل خطأ نسخ / لصق، أليس كذلك؟ يجب أن يكون printf.

ويجب أن لا يجب طباعة سلسلة المستخدم مباشرة بتنسيق printf.
تخيل أنواع المستخدمين "%d%f%s\a%c" ...

أفضل شيء للقيام به هو

printf("%s\n", input);

مع " n" بالتنسيق، لا تحتاج إلى fflush(stdout); لأن STDOUT هو الخط المخزن مؤقتا افتراضيا و " n" يفعل واحد من تلقاء نفسه.

الى جانب ذلك، إذا أنواع المستخدمين "%d%f%s\a%c" هذا ما تحصل عليه المطبوعة.


أفضل شيء للقيام به هو

puts(input);

يضيف " n" إلى الإخراج وليس لديه أي مشاكل مع سلاسل التنسيق.

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