我在读取字符串时遇到问题sscanf
。我已经简化了代码以专注于问题。下面是整个代码中的一个函数,它应该打开一个文件并读取一些东西。却sscanf
表现得很奇怪。例如,我声明了一个名为atm
content的字符串'ATOM'
。在它为空之后,sscanf
它打印这个字符串作为while。ATOM
可能是什么问题呢?我认为这一定是分配问题,但我找不到。我尝试了一些关于其他主题的建议,比如用%s
其他东西替换,但没有帮助。
void Get (struct protein p, int mode, int type)
{
FILE *fd; //input file
char name[100]="1CMA"; //array for input file name
char string[600]; //the array where each line of the data file is stored when reading
char atm[100]="ATOM";
char begin[4];
int index1 =0;
fd = fopen(name, "r"); // open the input file
if(fd==NULL) {
printf("Error: can't open file.\n");
return 1;
}
if( type==0 ) { //pdb file type
if( mode==0 ) {
while( fgets(string, 600, fd)!=NULL ) {
printf("1 %s\n",atm);
sscanf (string, "%4s", begin );
printf("2 %s \n",atm);
}
}
}
fclose(fd);
free(fd);
free(name);
}