我正在研究一个从文件(fp)读取并存储在word数组中的函数。我将MAX_WORD_SIZE声明为128,但是当我在此函数中输入任何文件并使用valgrind检查时,它告诉我“ while(getline(&line,&count,fp)!=-1)”行中有一个未初始化的值,我确实不明白:未初始化的值是多少?我的fp文件有效,单词数组也声明得很好。预先谢谢你。
CREATE TABLE Grp (GroupID int PRIMARY KEY)
CREATE TABLE Item (ItemID int PRIMARY KEY)
CREATE TABLE RuleSet(RulesetID int PRIMARY KEY)
CREATE TABLE Rules(RuleID int PRIMARY KEY)
GO
CREATE TABLE RuleSet_Rules (RulesetID int, RuleID int, PRIMARY KEY (RulesetID, RuleID))
CREATE TABLE Grp_Item (GroupID int, ItemID int, RuleSetID int, PRIMARY KEY (GroupId, ItemId))
GO
ALTER TABLE [dbo].[Grp_Item] ADD CONSTRAINT [FK_Grp_Item_Grp] FOREIGN KEY([GroupID]) REFERENCES [dbo].[Grp] ([GroupID])
GO
ALTER TABLE [dbo].[Grp_Item] ADD CONSTRAINT [FK_Grp_Item_Item] FOREIGN KEY([ItemID]) REFERENCES [dbo].[Item] ([ItemID])
GO
ALTER TABLE [dbo].[Grp_Item] ADD CONSTRAINT [FK_Grp_Item_Ruleset] FOREIGN KEY([RulesetID]) REFERENCES [dbo].[RuleSet] ([RulesetID])
GO
这是我称为read_file函数的函数:
#include "functions.h"
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int read_file(FILE *fp, char words[][MAX_WORD_SIZE + 1], int size) {
int i=0;int j=0;
size_t count=MAX_WORD_SIZE;
char* line=malloc(MAX_WORD_SIZE);
while(getline(&line,&count,fp)!=-1){
for(;count>0;count--,j++){
sscanf(line,"%c",&words[i][j]);
}
i++;
}
int totalNums = i;
int totalNum = j;
if (i<size){
return 1;
}
fclose(fp);
return 0;
}