我是初学者但是我已经在这个代码上工作了一个星期而且我无法使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 Texas\n");
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 %d\n", i,personsState[i]);
if (count == 50)
break;
}
return 0;
}
答案 0 :(得分:3)
问题,我认为是
if (personsName == None)
这不是比较两个字符串的方法。您需要使用strcmp()
来比较内容。
此外,两个连续的scanf()
具有相同的参数来存储输入。第二个scanf()
将覆盖先前获取的输入。
FWIW,None
不是字符串。您需要使用"None"
来表示字符串。
也就是说,通过scanf()
的不受控制的输入可能导致缓冲区溢出。最好使用长度说明符来限制扫描,例如
scanf("%99s", personsName);
等等。