29-03-2012, 17:58
|
|
|
חבר מתאריך: 17.03.02
הודעות: 2,354
|
|
בעיה בקליטת מחרוזת (יותר נכון: רצף של מחרוזות) ב-C
שלום,
אני צריך לממש תוכנית של מעין "שורת פקודה" שכזו, כך שעבור כל שורה שאני קולט (בלולאת while) צריכה לעשות משהו.
עכשיו, משום מה אחרי כמה שורות של קליטת שורות מהמשתמש, התוכנית עפה לי ומופיעה לי השגיאה הבאה:
ניסיתי להבין מאיפה הבעיה, לא הצלחתי.
הנה הקוד, אשמח אם מישהו יזרוק עצם:
main:
קוד PHP:
int main() { char *line; line = readLine(); while(strcmp(line, "!quit")) { free(line); line = readLine(); } free(line); }
(חשדתי שהבעיה היא עם שחרור הזיכרון שאני עושה, אבל גם אם אני מנסה להוריד את השורה הזו, הבעיה נותרת. מה גם שהגיונית לא אמורה להיות עם זה בעיה.)
הפונקציה readLine:
קוד PHP:
char *readLine() { char *line; int phsize, lsize, c; phsize = 1; lsize = 0; line = (char *) malloc((1 + phsize) * sizeof(char)); if(!line) { printf("Error allocating memory. exiting..."); exit (1); } while( (c = getchar()) != '\n') { if(lsize == phsize) { (char *) realloc(line, (1 + phsize*2)*sizeof(char)); if(!line) { printf("Error allocating memory. exiting..."); exit (1); } phsize *= 2; } line[lsize++] = c; } (char *)realloc(line, (1 + lsize)*sizeof(char)); line[lsize] = '\0'; return line; }
תודה!
|