連結リストにchar型配列を入れる
現在c言語でテキストファイルを読み込んで連結リストに格納し、出力するプログラムを組んでいるのですがchar型配列がセルにうまく入りません。どこが悪いのか教えていただきたいです。
発生している問題・エラーメッセージ
test.txt
7
0 該当番号がなかった場合
1 abc
4 ddd
7 fkd
2 ieo
4 rif
9 fld
実行結果 該当数7 0 該当番号がなかった場合 9 fld 9 fld 9 fld 9 fld 9 fld 9 fld
該当のソースコード
c言語
1#include<stdio.h> 2#include<stdlib.h> 3#include"lib2.h" 4 5struct cell{ 6 char *no; 7 char *naiyo; 8 struct cell *next; 9}; 10 11struct unk{ 12 char no[512]; 13 char naiyo[512]; 14}; 15 16struct cell front={"0","0"}; 17 18void printList(void){ 19 struct cell *p; 20 p=front.next; 21 while(p!=NULL){ 22 printf("%s %s\n",p->no,p->naiyo); 23 p=p->next; 24 } 25} 26 27int main(int argc,char *argv[]){ 28 29 char no[512],naiyo[512]; 30 struct cell *p; 31 struct unk *unk; 32 int cnt,i; 33 34 35 if(argc!=2){ 36 fprintf(stderr,"プログラム引数を1つ指定してください\n"); 37 exit(1); 38 } 39 40 infile_open(argv[1]); 41 42 infile_scanf("%s",no); 43 cnt=atoi(no); 44 printf("該当数%d\n",cnt); 45 46 unk=malloc(sizeof(struct unk)); 47 if(unk==NULL){ 48 fprintf(stderr,"エラー:malloc失敗\n"); 49 exit(1); 50 } 51 52 infile_scanf("%s",unk->no); 53 infile_scanf("%s",unk->naiyo); 54 printf("%s ",unk->no); 55 printf("%s\n",unk->naiyo); 56 57 58 59 for(i=1;i<cnt;i++){ 60 p=malloc(sizeof(struct cell)); 61 if(p==NULL){ 62 fprintf(stderr,"エラー:malloc失敗\n"); 63 exit(1); 64 } 65 66 infile_scanf("%s",&no); 67 infile_scanf("%s",&naiyo); 68 69 70 p->no=no; 71 p->naiyo=naiyo; 72 73 p->next=front.next;/*新しいセルが今の先頭セルを指すようにする*/ 74 front.next=p;/*次にダミーセルが新しいセルを指すようにする*/ 75 76 } 77 infile_close(); 78 79 printList(); 80 81 return 0; 82}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。