私は電子メールアドレスを持つテキストファイルを持っています。ファイルからデータを取得するためのリンクリストの使用
私はそれらの電子メールを入手し、それを任意のデータ構造または変数に格納したいと考えています。 次に、データ構造からランダムにメールアドレスを選択する必要があります。
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string>
struct link_list
{
char mail[50];
int counter;
struct link_list *next;
};
typedef struct link_list node;
void main()
{
FILE *fp ;
char string1[80];
node *head;
int count_length=0;
char *fname = "email.txt";
fp = fopen (fname, "r") ;
char line [ 128 ]; /* or other suitable maximum line size */
int count=0;
while (fgets (line, sizeof line, fp) != NULL) /* read a line */
{
count++;
if(head==NULL)
{
head=(node *)malloc(sizeof(node));
fscanf(fp,"%s",string1);
strcpy(head->mail,string1);
head->counter=count;
head->next=NULL;
}
else
{
node *tmp = (node *)malloc(sizeof (node));
fscanf(fp,"%s",string1);
strcpy(tmp->mail,string1);
tmp->next = head;
tmp->counter=count;
head = tmp;
}
}
fclose(fp);
fp = fopen (fname, "r") ;
fclose(fp);
//printf("%d",count_length);
getch();
}
私はcode..iは、アサーションエラーに代わり尾のリストの先頭に新しいエントリを追加
さらに進む前に、 'fopen'の呼び出しが成功し、エラーを適切に処理する必要があります。 –
あなたのコードを少し分けることをお勧めします:最初に動作するリンク先の実装を記述し、_then_あなたのファイルの内容で埋めようと心配します。 'head'がNULLでない場合、新しい' node'を割り当て、必要なデータを格納し、 'next'ポインタを' head'に設定し、 'head'を新しいものに置き換えますノード。代わりに追加したい場合は、それはより多くの作業であり、ユーザーの練習として残します。 :) – sarnold