【发布时间】:2012-11-05 18:20:39
【问题描述】:
你好,我有这个功能
int printofarray(int *j,double *n)
{
int x,k;
k=*j;
if(n==NULL) {
printf("array was not created\n");
return 1;}
for(x=0;x<k;x++){
printf("%.2lf\n",*(n+x));}
return 0;
}
当我使用它时,输出是这样的
34.77
6114.05
410.70
但我想这样写
34.77
6114.05
410.70
想好怎么做?
【问题讨论】:
-
请取消 feof()。它不会做你期望它做的事情。还要了解指针:
p_x[x] = f1;与*(p_x+x)=f1;相同,但更易于阅读。 -
如何取消我不明白的 feof
-
您应该这样做:
while (fgets(s1, sizeof(s1), fr) != 0 && fgets(s2, sizeof(s2), fr) != 0 && fgets(s3, sizeof(s3), fr) != 0 && fscanf(fr, "%d", &c1) == 1 && fscanf(fr, "%f", &f1) == 1 && fgets(s4, sizeof(s4), fr) != 0 && fscanf(fr, "%d", &c2) == 1) pz++;适当地分布在多行上。或者将输入代码放入一个报告它是否成功的函数中——以避免重复(这很可怕)。始终检查每个输入操作;不要使用feof()这样做。仅使用feof()来区分 EOF 和失败时的错误。 -
将两个
fscanf()调用与一个fscanf_s()调用混合在一起有点奇怪。形式上没有错误,但不一致和一致性在编程中很重要。 -
谢谢我没有注意到 fscanf_s()