次のような文字列 int int 形式のテキスト ファイルから値を読み取りたいとします。
testing 5 17
charlie 12 1
delta 88 4
fscanfを使用してファイルを読み取り、入力をいくつかの変数に入れ、それらをリンクリストノードとして挿入する関数に送信する関数があります。
void readFile(LinkedList *inList, char* file)
{
char* tempName;
int tempLoc, tempNum;
FILE* f;
f = fopen(file, "r");
if(f==NULL)
{
printf("Error: could not open file");
}
else
{
while (fscanf(f, "%s %d %d", tempName, &tempLoc, &tempNum) != EOF)
{
insertFirst (inList, tempName, tempLoc, tempNum);
}
}
}
insertFirst 関数:
void insertFirst(LinkedList* list, char* inName, int inLoc, int inNumMeth)
{
LinkedListNode* newNode;
newNode = (LinkedListNode*)malloc(sizeof(LinkedListNode));
newNode->className = inName;
newNode->loc = inLoc;
newNode->numMethods;
newNode->next = list->head;
list->head = newNode;
}
リンクされたリストをトラバースして値を出力すると、セグメンテーション違反でクラッシュする前に、名前に奇妙な記号 (�t) が表示され、int に正しくない数値が表示されます。原因究明に困っています。