C 如果是字符,则重做该函数
在C代码中。 这是我想在下面工作的部分。我想能够做到。。。如果一个字符值,然后说“不是一个数字”,但是,因为它是一个数组,它会增加,我不知道如何做到这一点,新手在这里,所以请解释,并向我展示一个例子如何做,如果可能的话。必须输入最多10个值 因此,如果: 雇员1=c “不是数字。请重试。” 员工1=5 雇员2=55 雇员3=g “不是数字。请重试。” 雇员3…等C 如果是字符,则重做该函数,c,C,在C代码中。 这是我想在下面工作的部分。我想能够做到。。。如果一个字符值,然后说“不是一个数字”,但是,因为它是一个数组,它会增加,我不知道如何做到这一点,新手在这里,所以请解释,并向我展示一个例子如何做,如果可能的话。必须输入最多10个值 因此,如果: 雇员1=c “不是数字。请重试。” 员工1=5 雇员2=55 雇员3=g “不是数字。请重试。” 雇员3…等 void getSalaries(float sal[], int size) { int i = 0; for(i
void getSalaries(float sal[], int size)
{
int i = 0;
for(i = 0; i < size; i++)
{
printf("Enter salary for Employee #%d: ", i + 1);
if (scanf("%f", &sal[i]) != 1)
{
printf ("Not a number. Please try again.\n");
break;
}
}
}
void getsal(浮动sal[],整数大小)
{
int i=0;
对于(i=0;i
如果你想重复某件事,你需要一个循环。如果您不知道要提前循环多少次,那么很可能是while
循环。以下结构将干净地实现您的目标:
while (1) {
printf("Enter salary for Employee #%d: ", i + 1);
scanf("%f", &sal[i]);
if (...valid...)
break;
printf("Not a Number. Try again.\n");
}
scanf
返回的值将帮助您确定输入是否有效。我将把查阅文档和完成这部分家庭作业的任务留给您。如果您想重复某些内容,您需要一个循环。如果您不知道要提前循环多少次,那么很可能是while
循环。以下结构将干净地实现您的目标:
while (1) {
printf("Enter salary for Employee #%d: ", i + 1);
scanf("%f", &sal[i]);
if (...valid...)
break;
printf("Not a Number. Try again.\n");
}
scanf
返回的值将帮助您确定输入是否有效。我将把查阅文档和完成这部分家庭作业的任务留给您。帮助您开始阅读,返回成功阅读的项目数(匹配格式字符串中的%标记)。所以你可以评估这个数字并采取相应的行动
int n=scanf("%f", &sal[i]);
if (n !=1){
// do something here
}
提示:使用scanf存在一个常见问题,即它无法从“坏”输入中恢复,除非您通过“吃掉”坏字符串清空缓冲区
如果你想让你的老师相信你的大脑很大,你可以这样做
#include <stdio.h>
#include <string.h>
void getSalaries (float sal[], int size)
{
char *scan_fmt[2] = {
"%f", // Get float
"%*s%f" // Eat previous bad input, and get float
};
char *cli_mess[2] = {
"Enter salary for Employee #%d: ",
"Try again, for Employee #%d: "
};
for (int i = 0, n=1; i < size; i += n==1){
printf (cli_mess[n!=1], i + 1);
n = scanf (scan_fmt[n!=1], &sal[i]);
}
}
int main ()
{
float s[3];
getSalaries (s, 3);
return 0;
}
#包括
#包括
作废工资(浮动sal[],整数大小)
{
字符*scan_fmt[2]={
“%f”,//获取浮点值
“%*s%f”//Eat先前的错误输入,并获取浮点值
};
char*cli_mess[2]={
“输入员工#%d的工资:”,
请重试,对于员工#%d:
};
对于(int i=0,n=1;i
一些帮助可以帮助您开始,返回成功读取的项目数(匹配格式字符串中的%标记)。所以你可以评估这个数字并采取相应的行动
int n=scanf("%f", &sal[i]);
if (n !=1){
// do something here
}
提示:使用scanf存在一个常见问题,即它无法从“坏”输入中恢复,除非您通过“吃掉”坏字符串清空缓冲区
如果你想让你的老师相信你的大脑很大,你可以这样做
#include <stdio.h>
#include <string.h>
void getSalaries (float sal[], int size)
{
char *scan_fmt[2] = {
"%f", // Get float
"%*s%f" // Eat previous bad input, and get float
};
char *cli_mess[2] = {
"Enter salary for Employee #%d: ",
"Try again, for Employee #%d: "
};
for (int i = 0, n=1; i < size; i += n==1){
printf (cli_mess[n!=1], i + 1);
n = scanf (scan_fmt[n!=1], &sal[i]);
}
}
int main ()
{
float s[3];
getSalaries (s, 3);
return 0;
}
#包括
#包括
作废工资(浮动sal[],整数大小)
{
字符*scan_fmt[2]={
“%f”,//获取浮点值
“%*s%f”//Eat先前的错误输入,并获取浮点值
};
char*cli_mess[2]={
“输入员工#%d的工资:”,
请重试,对于员工#%d:
};
对于(int i=0,n=1;i
如何说如果是字符?并声明这一点?请参见我对我的回答所做的补充,您在(1)我如何实现(I=0;I