2015-04-30 146 views
0

所以我正在製作一個程序,它接收一個員工的數據(id,名字等)我已經掌握了sanfoundry教程的大部分內容現在我只是想知道如何將我創建的員工記錄保存在文本文件中。當然,如何在開始運行程序時打開該文本文件。從文本文件中讀取/寫入鏈接列表C

我能夠正常地做到這一點,但我發現很難將其實施到教程的代碼中。

FILE *file =  fopen("C:\\Users\\Me\\Desktop\\AdvProgrammingAssignment\\employees.txt", "r"); 

char c; 

if(file == NULL) { 
    printf("Error, file not found"); 
} 

do { 
    c = fgetc(file); 
    printf("%c", c); 
} 
while(c != EOF); 

fclose(file); 

這將工作中的閱讀(這是從另一個程序我一樣),但現在我想添加到教程做什麼,並鏈表寫入一個文本文件,退出我的時候有點無知。

這是從教程中的代碼(不是全部)

void main() 
{ 
struct emp_data *linkList; 
char name[21], desig[51], addre[25], hd[15], empEmail[15], empSal[10]; 
char choice; 
int eno; 

linkList = NULL; 
printf("\n Welcome to the employee database \n"); 

menu(); 

do 
{ 
    /* choose oeration to be performed */ 
    choice = option(); 
    switch(choice) 
    { 
    case '1': 
     printf("\n Enter the Employee Number  : "); 
     scanf("%d", &eno); 
     printf("Enter the Employee name  : "); 
     fflush(stdin); 
     gets(name); 
     printf("Enter the Employee Department : "); 
     gets(desig); 
     printf("Enter the Employee Address : "); 
     gets(addre); 
     printf("Enter the Employee Hire Date : "); 
     gets(hd); 
     printf("Enter the Employee Email : "); 
     gets(empEmail); 
     printf("Enter the Employee Salary : "); 
     gets(empSal); 

     linkList = insert(linkList, eno, name, desig, addre, hd, empEmail,  empSal); 
     break; 
    case '2': 
     printf("\n\n Enter the employee number to be deleted: "); 
     scanf("%d", &eno); 
     linkList = deleteNode(linkList, eno); 
     break; 
    case '3': 
     if (linkList == NULL) 
     { 
      printf("\n Database empty."); 
      break; 
     } 
     display(linkList); 
     break; 
    case '4': 
     printf("\n\n Enter the employee number to be searched: "); 
     scanf("%d", &eno); 
     search(linkList, eno); 
     break; 
    case '5': break; 
    } 
} while (choice != '5'); 
} 

我應該創建一個新的方法,並在主要的開始打電話了嗎?任何幫助將不勝感激。

+1

'fgetc'返回一個'int'(而不是'char') –

+0

好吧...關於如何解決我的問題的任何想法解決了? – Neilk

+0

'int fgetc(std :: FILE * stream)'.. [link]更多信息http://en.cppreference.com/w/cpp/io/c/fgetc – Shondeslitch

回答

0

好吧,我可能理解這個錯誤,但是,如果你想要做的唯一的事情就是創建一個文本文件,並寫入數據到上述文本文件,一個容易的選擇,簡直是:

fd = open(pathToYourFile, O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); 

上,將創建一個文件,如權利窗:

用戶:讀+寫

allOthers:讀。

對於Unix,你將不得不指定組和其他所以它看起來像:

fd = open(pathToYourFile, O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IROTH | S_IRGRP); 

此外,O_TRUNC只是截斷文件,以便只寫你在它想要的信息。瞭解更多信息,請查看公開的人。

如果你想fopen它更短。只要做

file = fopen(PathToYourFile, 'w+'); 

然後,你所要做的就是寫入文件。 (所以要麼fd,int或文件,FILE *)