Я кодировал небольшую вещь на C и столкнулся с проблемой:
Я пытаюсь проанализировать файл, который содержит строки, отформатированные так:
name: description text: 42
name 2: description text2: 75
ИтакЧитая каждую строку, я передаю их в scanf следующим образом:
uint8_t buffer [512]={0};
uint8_t name[32]={0};
uint8_t desc[32]={0};
uint8_t chances;
[...]
scanres = sscanf( buffer, "%31[0-9a-zA-Z ]:%31[0-9a-zA-Z ]:%d", name, desc, &num );
Но даже если scanres равен "3" (правильное поведение);"desc" все еще печатается как "" (пустая строка)
Может кто-нибудь помочь мне с этим?Что я делаю не так?
[ПРАВИТЬ] Вот код в ситуации:
#define TINY_STRING_SIZE 32
// [...]
FILE *conffp;
uint8_t i=0;
uint8_t scanres = 0;
uint8_t buffer [512]={0};
uint8_t name[TINY_STRING_SIZE]={0};
uint8_t desc[TINY_STRING_SIZE]={0};
uint8_t chances;
if ((conffp = fopen(filename,"r+")) == NULL)
{
exit(0);
}
while ( fgets( buffer, sizeof buffer, conffp ) != NULL ) {
printf("[>] %s", buffer);
scanres = sscanf( buffer, "%31[0-9a-zA-Z ]:%31[0-9a-zA-Z ]:%d", name, desc, &chances );
if ( scanres == 3 ) {
printf("[+] id:%d desc:%s\tname:\"%s\"\tchances:%d)\n", i, desc, name, chances);
//looter_grab(looter, i, desc, name, chances);
i++;
}
else
{
printf("ERR: scanf got: %d \n",scanres);
}
}
fclose (conffp);
спасибо, Ларзук