所以我有一个C程序,你输入一个名称,年龄和高度作为命令行提示,这些参数写入文本文件,然而,高度(浮动),有一个问题。它写下了一个非常高的值,而不是你输入的内容。我觉得内存或类似内容存在问题。
#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 height
做错了什么?
答案 0 :(得分:2)
在使用stdlib.h
和atoi()
之前,您必须包含正确的标题(atof()
)或声明函数。
另请注意
return;
(不带返回值的return语句)在非void函数中不是很好。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;
}
}