עבור לתוכן

|שאלה| פלט בעברית בשפת C דרך VISUAL STUDIO

Featured Replies

פורסם

היי, בדיוק התחלתי להתעניין בשפת התכנות C, וכשניסיתי להזין קוד שיוציא פלט בעברית כל מה שקיבלתי זה ג'יבריש בCMD, הקוד עובד אבל המלל לא.

סלחו לי על הבורות אבל זה אפשרי שהCMD יציג אותיות בעברית? :kopfpatsch:

תודה מראש, ושוב סליחה על השאלה המטופשת.

הקוד, במקרה ולא ניסחתי את עצמי כשורה -



#include <stdio.h>
int main ()
{
printf("מלל כלשהו");
return 0;
}


פורסם

תגיד אתה רציני זאת שאלה הכי מיותרת שמישהו שאל

בקיצור שככתה לעשות start

void main ()   

ו int זה מספר שלם כמובן לא רושמים עם ()

תחפש בגוגל יש מלא מדרכים על איך להדפיס בפעם הראשונה

פורסם

ohadg: שימוש ב-void main הוא שגוי, וצריך לרשום int main. אם אתה לא מבין בתחום אז אני מבקש שלא תנסה לעזור...

פותח הת'רד: יש כאן למעשה שתי בעיות. קודם כל, חלון הקונסולה, כברירת מחדל, לא יודע להציג עברית. חוץ מזה, הפונקציה printf מדפיסה מחרוזות ANSI, שגם כן לא תומכות בעברית. במקום זה צריך להשתמש בקידוד unicode, שיודע להכיל תווים עבריים (בין השאר).

בשביל להתמודד עם הבעיה של printf צריך להשתמש בפונקציה wprintf, ככה:

wprintf(L"מלל כלשהו");

הפונקציה wprintf יודעת להדפיס מחרוזות unicode, וה-L שלפני המחרוזת אומר שהמחרוזת היא כזו.

בשביל להתמודד עם הבעיה השנייה, מצאתי את הלינק הזה:

http://stackoverflow.com/questions/2492077/output-unicode-strings-in-windows-console-app

בקצרה הם אומרים להוסיף את השורה הבאה בתחילת התכנית:


_setmode(_fileno(stdout), _O_U16TEXT);

לא יודע אם זה עובד, אבל שווה לנסות (אתה יכול לנסות גם את הדברים האחרים שהציעו שם).

פורסם
  • מחבר

ohadg: שימוש ב-void main הוא שגוי, וצריך לרשום int main. אם אתה לא מבין בתחום אז אני מבקש שלא תנסה לעזור...

פותח הת'רד: יש כאן למעשה שתי בעיות. קודם כל, חלון הקונסולה, כברירת מחדל, לא יודע להציג עברית. חוץ מזה, הפונקציה printf מדפיסה מחרוזות ANSI, שגם כן לא תומכות בעברית. במקום זה צריך להשתמש בקידוד unicode, שיודע להכיל תווים עבריים (בין השאר).

בשביל להתמודד עם הבעיה של printf צריך להשתמש בפונקציה wprintf, ככה:

wprintf(L"מלל כלשהו");

הפונקציה wprintf יודעת להדפיס מחרוזות unicode, וה-L שלפני המחרוזת אומר שהמחרוזת היא כזו.

בשביל להתמודד עם הבעיה השנייה, מצאתי את הלינק הזה:

http://stackoverflow.com/questions/2492077/output-unicode-strings-in-windows-console-app

בקצרה הם אומרים להוסיף את השורה הבאה בתחילת התכנית:


_setmode(_fileno(stdout), _O_U16TEXT);

לא יודע אם זה עובד, אבל שווה לנסות (אתה יכול לנסות גם את הדברים האחרים שהציעו שם).

תודה רבה :D

פורסם

אה טוב חשבתי שהוא רוצה ללמוד שפת c לא שמתי לב לשאלה

אבל ככה מתחילים בשפת c

:facepalm:

פורסם

ממש לא ככה מתחילים בC. השימוש בvoid main הוא לא תקני, ויש לצערי מדריכים מיושנים שמלמדים לכתוב ככה (רוב המדריכים בעברית)... למרות שזה לא תקני כבר יותר מ20 שנה.

פורסם

נצל"ש

אשמח לקבל מקור כתוב לאי-תקניות הזאת...

פורסם

תוכניות אחרות שקוראות ל-main שלך עשויות לצפות לערך החזרה על מנת לדעת אם התרחשה שגיאה או לא.

לתוכניות פשוטות כמובן ש ()void main יעבוד אבל זו טעות יסודית. תוכנית עלולה לקרוס רק בגלל איזה main שהוכרז כמחזיר void.

אתה יכול לבדוק את הסטנדרט שמוגדר ב- ANCI C.

פורסם

נצל"ש

אשמח לקבל מקור כתוב לאי-תקניות הזאת...

המקור הוא כמובן הסטנדרט. יש קומפיילרים שלא ירשו ערך מוחזר אחר מאשר int פשוט. GCC למשל לא מרשה (כאשר מקמפלים ב++C). היסטורית זה מעולם לא היה מותר, בספר של K&R הושמט גם ה-int לפני שם הפונקציה אבל בC העדר ערך מוחזר לפני פונקציה הוא כמו החזרת int.

לשואל המקורי (או לאחרים שמתעניינים) בלינוקס זה נעשה כך. זה מחייב שהקונסול יידע להדפיס UTF-8 עברי:


#include <locale.h>
#include <stdio.h>
#include <wchar.h>

int main()
{
setlocale(LC_ALL, "he_IL.UTF-8");
wprintf(L"שלום עולם\n");
return 0;
}

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים