我正在寫一個程序,它應該做許多事情,包括提示用戶輸入我已經完成的文件的名稱,但是我遇到了一個麻煩的問題,從一個文件的每一行,將它存儲爲一個結構數據結構,最後使用malloc,calloc命令將它存儲在內存中的所有有效記錄進行驗證。所以如何做到這一點的幫助將是有幫助的。處理每一行以存儲爲一個結構
#include <stdio.h> //library including standard input and output functions
#include <stdlib.h> //library including exit and system functions used below
#include <string.h> //library including string functions used
struct packet{
int source;
int destination;
int type; // Varibles for the structure
int port;
char data[50];
char * filename;
};
int main()
{
printf("**************Details*******************************\n");
printf("*****Student name: ***********************\n");
printf("*****Course name: *******\n");
printf("*****Student ID: ************************ \n");
printf("\n");
// The program must prompt for the name of the input file. If it doesn't exist the program should stop with an error message
FILE *DataFile;
char filename[10] = { '\0' } ;
char DataLine[70];
printf("Enter the filename you wish to open\n");
scanf("%s", &filename);
if ((DataFile = fopen(filename, "r")) == NULL)
{
printf ("*****file could not be opened. : %s\n", filename);
exit(1);
}
// Read the data from this file
char *fgets(DataLine, 70, (FILE) *DataFile);
system("pause");
return 0;
}
這裏是文本文件的程序應該從
0001:0002:0003:0021:CLS
0001:0010:0003:0021:CLS
0001:0002:0002:0080:<HTML>
0005:0002:0002:8080:<BR>
0005:0012:0002:8080:<BR>
0001:0002:0002:0080:<BODY>
0005:0002:0002:8080:<B>HELLO</B><BR>
0002:0004:0002:0090:100000000000000000022
0001:0002:0003:0021:DEL
0002:0004:0002:0010:100000000000000000023
從文件中的每個結腸取數據顯示了該數據包結構的一部分應該是的一部分,即,所述第一組的4號是「源」,然後「目的地等等
這是你的功課嗎? – Igor 2014-08-29 08:03:06
使用'char * fgets(DataLine,70,(FILE)* DataFile)調用'fgets';'看起來不奇怪?因爲它不應該編譯,所以發佈了代碼 – 2014-08-29 08:11:06
。 – 2014-08-29 08:12:59