2010-12-03 39 views
-1

傢伙... u能幫助我在我的代碼中應用的malloc ...這裏是我的代碼:應用的malloc

#include<stdio.h> 
#include<stdlib.h> 
struct studentinfo{ 
     char id[8]; 
     char name[30]; 
     char course[5]; 
}s1; 
main(){ 
    int i; 
    FILE *stream = NULL; 
    stream = fopen("studentinfo.txt", "a+"); 

    struct studentinfo s1; 
    struct studentinfo array[3]; 
    for (i =0; i<1; i++){ 
     printf("Enter Student ID: "); 
     scanf("%s", s1.id); 
     fflush(stdin); 
     printf("Enter Student Name: "); 
     gets(s1.name); 
     fflush(stdin); 
     printf("Enter Student Course: "); 
     scanf("%s", s1.course); 

     fprintf(stream, "\n%s,\t%s,\t%s", s1.id, s1.name, s1.course); 
    } 
     fclose(stream); 
    getch(); 
} 

我知道的malloc alots比一般的陣列更多的空間......但還是即時通訊有使用硬一次...非常感謝:)

+2

至少* *試試... – 2010-12-03 13:22:47

+0

`爲(i = 0;我<1;我++)`? – 2010-12-03 13:26:13

回答

3

之前,我們幫你,一定要做到這一點:

然後:

  • 告訴我們您想要達到的目標;
  • 告訴我們究竟發生了什麼;
  • 告訴我們你試過的東西;
  • 告訴我們什麼在擾擾你;
  • 告訴我們你不瞭解的東西。

編譯器和節目輸出有所幫助。

PS:排序期待一個反對票,但需要做。

0

我認爲你是在同一機構作爲@newbie。然而,Newbie自己做了一個嘗試,並提出了明智的問題。

看一看Am i using malloc properly?

0
#include<stdio.h> 
#include<stdlib.h> 
struct studentinfo{ 
     char id[8]; 
     char name[30]; 
     char course[5]; 
}; 
main(){ 
    int i; 
    FILE *stream = NULL; 
    stream = fopen("studentinfo.txt", "a+"); 

    struct studentinfo * s1 = (struct studentinfo *)malloc(sizeof(struct studentinfo));  

    struct studentinfo * array = (struct studentinfo *)malloc(sizeof(struct studentinfo) * 3); 
    for (i =0; i<1; i++){ 
     printf("Enter Student ID: "); 
     scanf("%s", s1->id); 
     fflush(stdin); 
     printf("Enter Student Name: "); 
     gets(s1->name); 
     fflush(stdin); 
     printf("Enter Student Course: "); 
     scanf("%s", s1->course); 

     fprintf(stream, "\n%s,\t%s,\t%s", s1->id, s1->name, s1->course); 
    } 
     fclose(stream); 
    getch(); 
} 

BTW:
- fflush(標準輸入)是不可移植。
- gets()是危險的,用fgets替換它()

0

你不需要在你的例子中使用malloc,因爲你知道你會在設計中有多少學生(我猜,因爲你的循環以固定值結束)。當你只在運行時才知道它,你可以:

studentinfo *array;  // declare it as a pointer 

// get the number of students (num) in some way 

array = (studentinfo *) malloc(num * sizeof(studentinfo)); 

// use it as a normal array 

free(array) // don't forget to free! 

這是可行的,因爲數組和指針被認爲是相同的東西。

PS:對不起,我的英語水平,請耐心等待... :)