我是一个初学者,但我已经在这个代码上工作了一个星期了,我不能让我的scanf
函数工作。我所有的printf
函数输出都很好,但是如果我输入我的信息来测试我的代码,我没有得到任何东西。我是不是漏掉了什么简单的东西?
#include <stdio.h>
float average(float a[]);
int main ()
{
/* variable definition: */
char personsName[100];
char personsAge[3];
char personsState[20];
float Age, Texas;
int people,age,i,count,Avg,None;
// Loop through 50 people
for (people=0; people <2 ; people++)
{
Age =0.0;
printf("Enter Persons Name n");
scanf("%s", personsName);
printf("Enter None if this is last family member. n");
scanf("%s", personsName);
{
if (personsName == None)
break;
}
}
{
printf("Enter Persons Age n");
scanf("%s", personsAge);
float average(float a[])
{
printf("Average of all family members is %f n");
int i;
float avg, sum=0.0;
for(i=0;i<50;++i)
sum+=a[i];
avg =(sum/i);
return avg;
}
}
{
printf("Enter Persons State n");
scanf("%s", personsState);
while (Texas > 0)
{
printf("Enter Texasn");
scanf("%f",&Texas);
//Only assign if positive
if (Texas > 0)
{
personsState[count]=Texas;
count = count + 1;
break;
}
}
}
// Print data
for (i=0; i<count;i++)
{
printf ("Texas %f is %dn", i,personsState[i]);
if (count == 50)
break;
}
return 0;
}
我认为问题出在
if (personsName == None)
这不是比较两个字符串的方法。您需要使用strcmp()
来比较内容
另外,两个连续的scanf()
s具有相同的参数来存储输入。第二个scanf()
将覆盖前面的输入。
FWIW, None
不是字符串。您需要使用"None"
来表示字符串。
也就是说,通过scanf()
的不受控制的输入可能导致缓冲区溢出。最好使用长度说明符限制扫描,如
scanf("%99s", personsName);