C 如果是字符,则重做该函数

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

在C代码中。 这是我想在下面工作的部分。我想能够做到。。。如果一个字符值,然后说“不是一个数字”,但是,因为它是一个数组,它会增加,我不知道如何做到这一点,新手在这里,所以请解释,并向我展示一个例子如何做,如果可能的话。必须输入最多10个值

因此,如果:

雇员1=c

“不是数字。请重试。”

员工1=5

雇员2=55

雇员3=g

“不是数字。请重试。”

雇员3…等

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