|שאלה| פלט בעברית בשפת C דרך VISUAL STUDIO - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


DancingBear

Recommended Posts

היי, בדיוק התחלתי להתעניין בשפת התכנות 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

קישור לתוכן
שתף באתרים אחרים

תוכניות אחרות שקוראות ל-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;
}

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...