gpt4 book ai didi

在 C 问题中将字符串转换为 float ?

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:56 24 4
gpt4 key购买 nike

所以我有一个 C 程序,您可以在命令行提示中输入姓名、年龄和高度,这些参数将写入文本文件,但是,高度( float )存在问题。它记下了一个非常高的值,而不是您输入的值。我觉得内存或类似问题有问题。

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

int main(int argc, char *argv[]) {
if (argc != 4) {
printf("Please enter four parameters");
return;
} else {
char name[20];
strcpy(name, argv[1]);
int age = atoi(argv[2]);
double height = atof(argv[3]);
FILE *fp;

fp = fopen("name.txt", "w+");
fprintf(fp, "%s\n%d\n%.2f", name, age, height);
fclose(fp);

printf("File written!");

return 0;
}
}

那么我在 float 高度上做错了什么?

最佳答案

您必须包含适当的 header (stdlib.h) 或在使用它们之前声明函数以使用 atoi()atof().

还要注意

  • 在非 void 函数中使用 return;(没有返回值的 return 语句)不好。
  • 您应该检查 fopen() 是否成功。

试试这个:

#include <stdio.h>
#include <stdlib.h> /* add this */
#include <string.h>

int main(int argc, char *argv[]) {
if(argc != 4) {
printf("Please enter four parameters");
return 1; /* add a return value */
}
else {
char name[20];
strcpy(name, argv[1]);
int age = atoi(argv[2]);
double height = atof(argv[3]);
FILE *fp;

fp = fopen("name.txt", "w+");
if(fp == NULL) { /* add error check */
perror("fopen");
return 1;
}
fprintf(fp, "%s\n%d\n%.2f", name, age, height);
fclose(fp);

printf("File written!");

return 0;
}
}

关于在 C 问题中将字符串转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109408/

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