将一串输入存储到C中的结构中



想知道如何将用户输入的字符串存储在格式"字符串,字符,整数,整数"中进入结构。例如将"苹果,C,5,10"存储到

typedef struct {
char item[80];
char letter;
int x,y;
}information;
information apple;

我试图避免使用SCANF和一条长的代码将逗号变成定界线,因此想知道是否还有其他方法可以快速从SCANF阅读并将这些信息插入struct

您可以使用scanf指定复杂格式,例如:

scanf("%79[^,],%c,%d,%d", apple.item, &apple.letter, &apple.x, &apple.y);

%79[^,]表示扫描任何不是逗号字符的东西,最多79个字符。

请注意,如果用户输入一个格式较差的字符串,例如"aaa;b;1;2",则不会处理错误。为此,您需要编写更多代码。请参阅strtok

您可以使用格式字符串中的多个格式指定器来 scanf(),以一次扫描所有输入 用户输入,例如

int ret = -1;
if ((ret = scanf("%79[^,],%c,%d,%d", apple.item, &apple.letter, &apple.x, &apple.y)) != 4)
                       //always check the return value of scanf()                       
{
   printf("scanf() failedn");
   //do something to avoid usage of the member variables of "apple"
} 

但是,我会推荐 long Way ,例如

  • 使用fgets()
  • 读取行
  • 使用strtok(),作为分界符
  • 使用令牌(或根据需要使用strtol()转换)。

很安全,坚固。

尝试使用func read()读取,然后使用 strtok()

拆分字符串

以下是一些参考:

strtok:http://man7.org/linux/man-pages/man3/strtok.3.html

阅读:http://linux.die.net/man/2/read

相关内容

  • 没有找到相关文章