我们有一个像这样的数据库
username1:0:password:salt:0:0
具有完全相同结构的多行。当用户输入用户名时,我们使用fgets
逐行扫描并分隔变量中的每个部分,最后将数据库用户名与用户键入的用户名进行比较。看起来像这样:
while(fgets(buffer, sizeof(buffer), file) != NULL)
{
if(sscanf(buffer, "%[^:]", pwname) != 1)
{
break;
}
if(strcmp(pwname, name) == 0)
{
//Found!
}
}
因此,扫描数据库已解决,但是可以说我们想将数据库中的最后0更改为1,该怎么办?一种方法是简单地保存每个元素,进行类似"%[^:]:%d:%[^:]:%[^:]:%d:%d"
的操作,增加数量,而不是删除行并插入新值。但这似乎是口头上的。
有没有一种方法可以简单地找到该位置并直接更改值而无需删除所有内容?
此问题与this不同,因为它解决了如何查找模式以及在模式所在的位置替换字符串的问题。这个问题是关于我们何时知道在哪里编辑,如何在特定位置进行编辑?