【发布时间】:2014-11-21 20:38:38
【问题描述】:
假设我有一个包含这两行的 .txt 文件:
Item="1" Name="Sword" Damage="2.5"
Item="2" Name="Axe" Damage="3"
如何用C在文本文件中将斧头的伤害改为3.5?
已编辑:这就是我读取文本文件每一行的方式,我正在用文本信息填充 gtk 列表存储,dhd_LocalizaItem 是一个获取“”内部内容的函数,例如Item="1",我将使用该函数捕获 1,但所有 gtk 的东西都可以正常工作,正如我所说,我现在想要一个 C 函数/命令来编辑文本文件中一行的特定部分。
void get_message() {
GtkTreeIter dhd_iter;
FILE * dhd_pFile;
char dhd_G_CodProduto[256];
char dhd_G_NomeProduto[256];
char dhd_contaItem[16];
char dhd_quantidade[32];
char dhd_valorItem[32];
char dhd_getbuf[1024];
dhd_chekDel = 0;
dhd_pFile = fopen ("Logs/logCancelar.txt", "r");
if(dhd_pFile == NULL) {
printf("Erro! Nao foi possivel abrir o log de cancelamento!\n");
}
else {
while( (fgets(dhd_getbuf, sizeof(dhd_getbuf), dhd_pFile))!=NULL ) {
dhd_LocalizaItem (dhd_getbuf, dhd_stringItem);
dhd_restou = dhd_LocalizaItem( "Item=" , dhd_getbuf);
strcpy(dhd_contaItem,dhd_restou);
dhd_LocalizaItem (dhd_getbuf, dhd_strong);
dhd_restou = dhd_LocalizaItem( "CodProduto=" , dhd_getbuf);
strcpy(dhd_G_CodProduto,dhd_restou);
dhd_LocalizaItem (dhd_getbuf, dhd_strung);
dhd_restou = dhd_LocalizaItem( "NomeProduto=" , dhd_getbuf);
strcpy(dhd_G_NomeProduto,dhd_restou);
dhd_LocalizaItem (dhd_getbuf, dhd_streng);
dhd_restou = dhd_LocalizaItem( "Quantidade=" , dhd_getbuf);
strcpy(dhd_quantidade,dhd_restou);
dhd_LocalizaItem (dhd_getbuf, dhd_stringTotal);
dhd_restou = dhd_LocalizaItem( "ValorTotal=" , dhd_getbuf);
strcpy(dhd_valorItem,dhd_restou);
gtk_list_store_append(GTK_LIST_STORE( mainWindowObjects.liststore ), &dhd_iter);
gtk_list_store_set(GTK_LIST_STORE( mainWindowObjects.liststore ), &dhd_iter,
ITEM, dhd_contaItem,
CODIGO, dhd_G_CodProduto ,
DESCRICAO, dhd_G_NomeProduto ,
QTD, dhd_quantidade,
VALOR, dhd_valorItem,
-1 );
}
}
fclose(dhd_pFile);
}
对不起,大家的英语不好。
【问题讨论】:
-
查看
fscanf函数 -
对于每一行:读取它,根据需要进行调整,然后写入第二个文件。然后删除第一个文件并重命名第二个。发布您尝试过的内容。否则看起来 SO 正在做你的功课。
-
但是如何调整呢?我已经知道如何阅读每一行了。抱歉,我还是编程新手。
-
好吧,您需要在阅读后解析该行。将其分解成有意义的部分(如整数、浮点数和字符串)。正如@xjedam 提到的,
scanf()系列函数可以帮助您解决这个问题。一旦您在一组变量中获得了相关信息,通过调用printf()系列重新组装更正后的行可能很容易。 -
@chux 我将发布阅读每一行的代码
标签: c file text edit file-manipulation