ABA


"בעיה במצביעים ומערכים דו מימדיים בשפת C"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13506 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13506
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות
   19:06   13.08.06   
אל הפורום  
  בעיה במצביעים ומערכים דו מימדיים בשפת C  
 
   ערכתי לאחרונה בתאריך 13.08.06 בשעה 19:08 בברכה, Limp Bizkit
 
כתבתי פונקציה כזו :

רשמתי סוגריים עגולים במקום מרובעים בחלק מהמקומות כי זה לא מופיע משום מה :|


void print(char *p)
{
int j,i;

for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
putchar((*(p+i))(j));
putchar(' ');
}
putchar('\n');
}

}

ובהידור הוא מביא לי ארור כזה :


error: subscripted value is neither array nor pointer

בשורה הזו :


putchar((*(p+i))(j));

למה זה ? רשמתי את זה כמו שצריך... כשניסיתי לרשום לדוגמא ככה :


putchar((*(p+i)));

זה עבד כמו שצריך... אבל זה לא מה שאני צריך

אם מישהו יוכל לעזור לי תודה

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אתה מתייחס ל-p כמטריצה Nesher  13.08.06 19:52 1
     אז בעצם כשאני רושם 2 כוכביות Limp Bizkit 13.08.06 20:10 2
         אתה משתמש ב-putchar זה לא printf... אני לא יודע למה יש לך בעיה עכשיו.. Nesher  13.08.06 20:23 3
             התוכנית המלאה : Limp Bizkit 13.08.06 20:32 4
                 תעלה לפה בבקשה Net_Boy  13.08.06 21:00 5
                     הנה : Limp Bizkit 13.08.06 21:08 6
  אני עדיין לא הצלחתי, והדפים נמחקו, העלתי מחדש : Limp Bizkit 15.08.06 20:08 7

       
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   19:52   13.08.06   
אל הפורום  
  1. אתה מתייחס ל-p כמטריצה  
בתגובה להודעה מספר 0
 
ובעצם שולח כמערך רגיל...
תוסיף כוכבית נוספת לפני p
char **p


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות
   20:10   13.08.06   
אל הפורום  
  2. אז בעצם כשאני רושם 2 כוכביות  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 13.08.06 בשעה 20:17 בברכה, Limp Bizkit
 
אני מתייחס ל-P כמעריך דו מימדי ?

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


void print(char **p)
{
int j,i;

for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
putchar((*(p+i))(j));
putchar(' ');
}
putchar('\n');
}

}


אבל בתוכנית עצמה כשאני רושם 16 תווים זה עושה לי ככה :
דוגמא מהטרמינל :


(root@localhost chap8)# ./ex
Type 16 chars: abcdefghijklmnop
Segmentation fault


כנראה יש בעיה בפלט בפונקציה print
אם תוכל להגיד לי מה הבעיה בקוד שרשמתי, תודה

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   20:23   13.08.06   
אל הפורום  
  3. אתה משתמש ב-putchar זה לא printf... אני לא יודע למה יש לך בעיה עכשיו..  
בתגובה להודעה מספר 2
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות
   20:32   13.08.06   
אל הפורום  
  4. התוכנית המלאה :  
בתגובה להודעה מספר 3
 
   ערכתי לאחרונה בתאריך 13.08.06 בשעה 20:33 בברכה, Limp Bizkit
 
הנה התוכנית המלאה, אני עברתי על התוכנית כמה פעמים ולא יודע למה יש בעיה
:|


לקטע של ה-sort_up אל תתייחסו, הוא עובד כמו שרציתי, רק הקטע של הדפסת התווים מטריד אותי עכשיו


#include <stdio.h>


void sort_up(char *p)
{
int i,j;
char temp;

for(i=0; i<4 - 1; i++)
{
for(j=0; j<4-1-i; j++)
{
if(*(p+j) < *(p+j+1))
{
temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}


void print(char **p)
{
int j,i;

for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
putchar((*(p+i))(j));
putchar(' ');
}
putchar('\n');
}

}

int main(int argc, char *argv)
{
char c(4)(4);
int i,j;

printf("Type 16 chars: ");
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
scanf("%c", &c(i)(j));
}

sort_up(c);
print(c);


}

תודה רבה

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   21:00   13.08.06   
אל הפורום  
  5. תעלה לפה בבקשה  
בתגובה להודעה מספר 4
 
   http://rafb.net/paste/
ואז אני יוכל לעזור
כי אין לי כוח להמיר בין סוגריים ולהסתבך עם עצמי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות
   21:08   13.08.06   
אל הפורום  
  6. הנה :  
בתגובה להודעה מספר 5
 
   http://rafb.net/paste/results/BJwApM41.html


וכמו שאמרתי, במידה ואני רושם את הפונקציה print ככה :
http://rafb.net/paste/results/7odctZ30.html

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

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות
   20:08   15.08.06   
אל הפורום  
  7. אני עדיין לא הצלחתי, והדפים נמחקו, העלתי מחדש :  
בתגובה להודעה מספר 0
 
   יש לי קוד,
http://rafb.net/paste/results/8LrLur87.html
הכנסתי 16 תווים והכל.... אבל יש לו בעיה עם הפונקציה print
אני מכניס 16 תווים , הוא שולח אותם לפונקציה sort_up אבל שהוא בא להדפיס אותם הוא רושם לי בטרמינל בלינוקס ככה :
Type 16 chars: abcdefghijklmnop
Segmentation fault
אבל, אם אני רושם את הפונקציה printf בצורה הזו :
http://rafb.net/paste/results/gh70y067.html
הוא מדפיס לי, אבל לא בצורה שאני רוצה
תודה על העזרה! :D

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net