C “试图复制”;0.75“;作为来自argv[]

C “试图复制”;0.75“;作为来自argv[],c,double,argv,C,Double,Argv,出于某种原因,我尝试的任何结果都会忽略小数点后的数字 sscanf(argv[5]、“%.2lf”、&add4)不起作用 add4=atof(argv[5])不起作用 有什么帮助吗? 1:程序名(也就是我目前试图解决的程序,我需要以下参数。其中,double未正确保存) 2:字符串 3:int 4:int 5:双人 除了double之外,所有的都被复制到我的数组中了。我尝试过上面两种复制双精度的方法,但都会导致小数点后的数字为.00 声明: charadd1[50]; int add2,add3

出于某种原因,我尝试的任何结果都会忽略小数点后的数字

sscanf(argv[5]、“%.2lf”、&add4)不起作用

add4=atof(argv[5])不起作用

有什么帮助吗?
1:程序名(也就是我目前试图解决的程序,我需要以下参数。其中,double未正确保存)
2:字符串
3:int
4:int
5:双人

除了double之外,所有的都被复制到我的数组中了。我尝试过上面两种复制双精度的方法,但都会导致小数点后的数字为.00

声明:
charadd1[50];
int add2,add3;
双加4

此调用将向list.csv文件添加新行:

inv add banana 2.50

其中,
命令
已分配字符串“添加”

最终上市的将是:

“香蕉,2,2,2.00”在我的文本文件的末尾

if(strcmp(command,"add") == 0)
                {
                    strcpy(add1, argv[2]);
                    add2 = atoi(argv[3]);
                    add3 = atoi(argv[4]);
                    add4 = atof(argv[5]);

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

                    fprintf(fp3, "%s,%d,%d,%.2lf\n", add1, add2, add3, add4);

                    fclose(fp1);
                    fclose(fp3);
                    remove("inventory.csv");
                    rename("replica.csv", "inventory.csv"); 
                }
if(strcmp(命令,“添加”)==0)
{
strcpy(add1,argv[2]);
add2=atoi(argv[3]);
add3=atoi(argv[4]);
add4=atof(argv[5]);
文件*fp3=fopen(“replica.csv”,“w”);

对于(j=0;j启用更多警告并检查
sscanf
的返回值

% clang test.c
test.c:5:28: warning: invalid conversion specifier '.' [-Wformat-invalid-specifier]
        int n = sscanf(argv[1], "%.2lf", &x);
                                 ~^
1 warning generated.
atof
对我有效。请确保您包括stdlib。您也可以尝试
stdtod(argv[5],NULL)

尝试:

sscanf(argv[5], "%lf", &add4);

你能添加更多的代码和一个使用命令行参数的调用示例吗?你能详细说明“不起作用”部分吗?也许可以编辑你的问题以包含一个更完整的示例(最好是所谓的示例)?并且您至少有五个命令行参数,第五个是数字?请编辑您的问题以显示如何调用您的程序。您是说您有四个命令行参数,并且希望从第五个参数中获取值吗?请记住,
argv
的索引是第一个参数
1
ode>2
对于第二个,等等。我的错,第一个实际上是我要运行的程序的名称,而argv[]s之后的参数只是该程序所需的参数。请显示完整和实际的命令行,以及完整的代码示例。不起作用,小数点后仍为0。问题不在于sscanf,而在于printf()。请尝试printf(“%3.2lf\n”,add4);printf由于某些原因根本不起作用对不起,各位……我犯了一个愚蠢的错误。。