Функция sscanf изменяет содержимое другой строки
У меня проблемы с чтением строкsscanf
, Я набросал код, чтобы сосредоточиться на проблеме. Ниже приведена функция во всем коде, которая должна открывать файл и что-то читать. Ноsscanf
действует странно. Например, я объявляю строку с именемatm
с содержанием'ATOM'
, Передsscanf
печатает эту строку как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);
}