【发布时间】:2021-04-17 14:14:12
【问题描述】:
我正在尝试分别从内容为 '600 144 100 Rain' 的输入文件中分配 'hp' 、 'd' 、 's' 、 'status' 。我已成功将 3 个数字分配给 hp,d,s ,但 'Rain' 字符串仍未完成 因为每次我尝试添加它时它都会出现空白屏幕。这是我的 C 代码:
#include <stdio.h>
int read_file(int *hp, int *d, int *s, char t[]) {
FILE *infile, *outfile;
infile = fopen("input1.inp", "r");
// input1.inp's content is "600 144 100 Rain"
fscanf(infile, "%d %d %d %s", &hp, &d, &s, t);
printf("hp = %d\n",hp ) ;
printf("d = %d\n",d ) ;
printf("s = %d\n",s ) ;
printf("status = %s", t) ;
fclose(infile);
return 0;
}
如果我将“Rain”字符串排除在外,那么我的代码就会完美运行。 谁能告诉我如何正确地做,我犯了什么错误?
请注意,在参数区域声明变量对我来说是强制性的,我需要它来将变量传递给主要部分。谢谢!
【问题讨论】:
-
多想一下
%d格式需要什么数据类型,hp是什么数据类型,然后&hp是什么数据类型。 -
这家伙^^是对的。另外,你是如何在 main 中声明 t[] 的?它有足够的空间来存储字符串吗? (即它是否至少分配了 6 个字符)
-
@GalBirka 分配至少 5 个字符是令人满意的。 (4 个字符
Rain+ 1 个终止空字符)