gpt4 book ai didi

c - 尝试通过在进行更改后复制到新文件中然后重命名为旧文件名来重写文件?

转载 作者:行者123 更新时间:2023-11-30 19:20:24 25 4
gpt4 key购买 nike

运行我们编写的程序:
库存扣除itemName

这会从我们命名的任何食物的数量中扣除 1。

我的输入是逗号分隔值文本文件 (.csv)。这是我另存为 (.csv) 的文本文件:

hotdog, 10, 2, 1.50  
bun, 10, 2, 0.50
burger, 100, 10, 2.00

扫描到我的数组有效。但现在我对应该如何重写文件有点困惑。我尝试使用 putc,但在 fputs(item[j],fp2);

中收到此错误
74  6   C:\coding\Inventory.c   [Warning] passing argument 1 of 'putc' makes integer from pointer without a cast [enabled by default]

好的,没有更多编译错误了。但正在创建的replica.csv 文件很奇怪。我试图让它的格式与上面的 .csv 相同。有什么线索我哪里出错了吗?此外,rename 不会将“replica.csv”更改为“inventory.csv”。该文件仍名为“replica.csv”

谢谢。

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int i = 0, j = 0;
char command[50], argument[50], str[100];
int quantity[100], limit[100];
double cost[100];
char *item[100];
char *token, *ptr;

FILE *fp1 = fopen("inventory.csv", "r");
if(fp1 == NULL)
{
perror ("Error opening file");
}

while(fgets(str, 100, fp1) != NULL)
{
token = strtok (str,",");
ptr = strdup(token);
item[i] = ptr;
sscanf (token, "%s", item[i]);
token = strtok (NULL,",");
sscanf (token, "%d", &quantity[i]);
token = strtok (NULL,",");
sscanf (token, "%d", &limit[i]);
token = strtok (NULL,"\n");
sscanf (token, "%lf", &cost[i]);
i++;
}

strcpy(command, argv[1]);

if(strcmp(command,"deduct") == 0)
{
strcpy(argument, argv[2]);

for(j=0;j<i;j++)
{
if(strcmp(argument,item[j]) == 0)
quantity[j]--;

}
FILE *fp2 = fopen("replica.csv", "w");
for(j=0;j<i;j++)
{
fprintf (fp2, "%s,%d,%d,%.2lf\n", item[j], quantity[j], limit[j], cost[j]) ;
}
fclose(fp1);
fclose(fp2);
remove("inventory.csv");
rename("replica.csv", "inventory.csv");
}
return 0;
}

最佳答案

第二个for(j=0;j<i;j++)循环应该是这样的:

FILE *fp2 = fopen("replica.csv", "w");

for(j=0;j<i;j++)
{
fprintf (fp2, "%s,%d,%d,%lf\n", item[j], quantity[j], limit[j], cost[j]) ;
}

您正在使用fputs类型除 char* 之外,否则程序将无法编译。并使用 putcint将参数视为字符,例如与 putc(65, fp)你会得到A而不是65fp文件。

您的代码中可能还存在其他问题。

关于c - 尝试通过在进行更改后复制到新文件中然后重命名为旧文件名来重写文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22301145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com