נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שאלה בC שקשורה לSTR

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
שירן
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 21 March 2008 בשעה 13:44 | IP רשוּם
ציטוט שירן

#include <stdio.h>
#include <string.h>

#define size 5

int main()
{
    char str[size], new_str[size];
int i,len,x;
printf("please enter 5 letters\n");
scanf("%s", str);
len=strlen(str);
printf("%d\n", len);

for (i=0; i<len; i++)
new_str[i]=str[len-1-i];

printf("the result: %s\n", new_str);}

 

הבעיה היא שבהדפסת הSTR החדש מתווספים 2 תווים  בסוף

מה הסיבה לכך?

והאם הפתרון היחיד האפשרי הוא הדפסת הSTR החדש דרך לולאה מ-0 ועד LEN, כלומר הדפסת תו תו?

 

 


 

חזרה לתחילת העמוד הצג את כרטיס החבר של שירן חפש הודעות אחרות של שירן בקר בדף הבית של שירן
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 21 March 2008 בשעה 14:10 | IP רשוּם
ציטוט shoshan

קודם כל שים לב שמערך בגודל של 5 תוים, יכולה להיכנס בו מחרוזת בעלת עד 4 תוים, בגלל שצריך גם מקום ל-NULL שמסמן את סוג המחרוזת.

והבעיה היותר ספציפית שלך היא שלא הוספת NULL בסוף המחרוזת החדשה ולכן הפונקציה printf ממשיכה להדפיס תוים מהזיכרון עד שהיא מגיעה לתו שערכו 0.

אתה יכול לתקן את זה ע"י שינוי של הקטן בתנאי של הלולאה לקטן שווה.


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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