При токенизации строки, столкнувшейся с ошибкой сегментации, как ее устранить?
я маркирую строку следующим образом
Пример:1
оперативная память 1234 1:лазурь;1
Пример:2
оперативная память 1234 4:60
и я храню в одной структуре.я получаю ошибку сегментации
Что я уже пробовал:
я пытался вот так
int check_with_message_format(char *string) { char *ptr=NULL; char delim[10] = {" :;"}; int l=1; char username[10]; char password[10]; char value[15] = "Pooja"; char value1[15] = "123"; char *msg_str = string; printf("message arrived%s\n",msg_str); user_info user_msg_fmt; ptr = strtok(msg_str,delim); while(ptr != NULL) { strcpy(user_msg_fmt.user_id, ptr ); printf("token1:%s\n",user_msg_fmt.user_id); ptr = strtok (NULL, delim); strcpy(user_msg_fmt.password, ptr ); printf("token2:%s\n",user_msg_fmt.password); ptr = strtok (NULL, delim); strcpy(user_msg_fmt.command, ptr ); printf("token3:%s\n",user_msg_fmt.command); ptr = strtok (NULL, delim); strcpy(user_msg_fmt.id_property, ptr ); printf("token4:%s\n",user_msg_fmt.id_property); ptr = strtok (NULL, delim); strcpy(user_msg_fmt.value, ptr ); printf("token5:%s\n",user_msg_fmt.value); ptr = strtok (NULL, delim); strcpy(user_msg_fmt.threshold, ptr ); printf("token6:%s\n",user_msg_fmt.threshold); } while(l <= USER_ID) { sprintf(username,"Username%d",l); get_xml_content(FILE_NAME,PARENT_NODE_1,username,value); if(strcmp(user_msg_fmt.user_id , value)==0) { printf("valid user id:%s\n",value); sprintf(password,"Password%d",l); get_xml_content(FILE_NAME,PARENT_NODE_1,password,value); if(strcmp(user_msg_fmt.password, value1)==0) { printf("valid password:%s\n",value); check_with_the_SET_GET_command(user_msg_fmt); } break; } else continue; } return SUCCESS; }
как решить эту проблему?
CPallini
Этот код неполон. Например, в нем отсутствует определение "user_info user_msg_fmt". Пожалуйста, предоставьте полный код, чтобы получить лучшую помощь.