פורסם 2010 ביוני 1615 שנים היי חברים,אני צריך לכתוב תכנית שעושה את הדבר הבא:כתבו פונקציה המקבלת מחרוזת שמייצגת מספר שלם אי-שלילי ומספר נוסף location המייצג מיקום במספר (ניתן להניח שהקלט תקין). הפונקציה תחזיר את ערך הסיפרה במיקום המבוקש. כלומר, עבור location==0 תוחזר סיפרת האחדות, עבור location==1 תוחזר סיפרת העשרות, וכן הלאה. לדוגמא, קריאה לפונקציה עם המחרוזת "123" והמיקום 0 תחזיר את הערך 3.זאת התכנית שכתבתי:#include <stdio.h>#include <string.h>int numloc(char *s, int location){ return *(s+strlen(s)-location-1)-'0';}int main(){ int num; char s[4]="123"; printf("Please enter a location\n"); scanf("%d",&num); printf (findDigit(&s,num)); return 0;}הבעיה היא שהתכנית מתרסקת בשלב הפונקציה.
פורסם 2010 ביוני 1715 שנים מחבר לגבי הprintf צודק בהחלט!לא שמתי לב. שחכתי את ה"%d"לגבי שליחת כתובת המחרוזת, למה אני לא אמור להכניס את &?תודה רבה!
פורסם 2010 ביוני 1715 שנים כי מערך הוא כבר מצביע. הטיפוס של s& הוא "מצביע למערך של char", והפונקציה פשוט מצפה ל"מצביע ל-char".
פורסם 2010 ביוני 1715 שנים מחבר אוקי ובנוגע לאורך מחורזת,הפקודה strlen מחזירה לי את אורך כל המחרוזת כולל \0?כלומר מחרוזת שהגדרתי אותה באורך 5 אז האם הפקודות הבאות חוקיות:?len=strlen(s);printf("%s",s[len]);או שאני צריך לכתובprintf("%s",s[len-1]);וזה במידה ואני רוצה להדפיס את התו שלפני האפס
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.