关于C语言中fscanf()函数如何读入文件中下一行的数据!!

来源:百度知道 编辑:UC知道 时间:2024/06/09 04:08:36
我想读入如下文件
1, 7, 1
CC, CC, CC, CC, CC, CC, O1,

当读完第一行后,如何再读下一行?
#include<stdio.h>
#include<string.h>

int main()
{ int Comp_Name;
int Ring_Num;
int N_H_Num;

FILE * fp;
if((fp=fopen("inoutdata.txt","r"))== NULL)
{ printf("Cannot open file.\n");
exit(0);
}
fscanf(fp,"%d, %d, %d\n",&Comp_Name,&N_H_Num,&Ring_Num);
printf("%d, %d, %d\n",Comp_Name,N_H_Num,Ring_Num);

int Bond_Num;
Bond_Num=Ring_Num+N_H_Num-1;
printf("Bond_Num=%d",Bond_Num);

char * Non_H_atom[7];
fscanf(fp,"%s,",&Non_H_atom[0]);
int i;
for(i = 1;i<N_H_Num;i++)
{ fscanf(fp," %s,",&Non_H_atom[i]);
}

错误
1.你的文件里的逗号是中文字符,
2.char * Non_H_atom[7];
这你只是定义了一个字串指针,没有分配空间,
如你要使用就要先分配空间给他,除了刚定义时可以直接赋值。
如char * Non_H_atom[7]={"aa","bb",....;}

改成
#include<stdio.h>
#include<string.h>

int main()
{ int Comp_Name;
int Ring_Num;
int N_H_Num;
int i;
FILE * fp;
int Bond_Num;
char *Non_H_atom[7];

if((fp=fopen("inoutdat.txt","r"))== NULL)
{ printf("Cannot open file.\n");
exit(0);
}
fscanf(fp,"%d,%d,%d",&Comp_Name,&N_H_Num,&Ring_Num);
printf("%d, %d, %d\n",Comp_Name,N_H_Num,Ring_Num);

Bond_Num=Ring_Num+N_H_Num-1;
printf("Bond_Num=%d\n",Bond_Num);

for(i = 0;i<N_H_Num;i++)
{
Non_H_atom[i]=(char *)malloc(5);