C 当没有为名字输入值时,如何使循环中断

C 当没有为名字输入值时,如何使循环中断,c,loops,for-loop,if-statement,break,C,Loops,For Loop,If Statement,Break,我不能让我的代码在名字处中断,它只有在我将所有值留空后才会中断 #include <stdio.h> #include <stdbool.h> #include <string.h> void main(void) { //Start main function // Declare variables char charTempArray[50] = ""; char charFirstNames[50][50]; ch

我不能让我的代码在名字处中断,它只有在我将所有值留空后才会中断

#include <stdio.h>
#include <stdbool.h>
#include <string.h>


void main(void) { //Start main function

    // Declare variables
    char charTempArray[50] = "";
    char charFirstNames[50][50];
    char charLastNames[50][50];
    char charTempSal[10] = "";
    int intSalaries[50];
    int intSalarySum = 0;
    int intSalaryAvg = 0;
    int intSalaryTop = 0;
    int intSalaryBot = 9999999999;
    int intArraySize = 0;
    int i = 0;
    int intCharConv = 0;

    //User input to build the arrays
    for(i = 0; i < 50; ++i)
        if (charFirstNames[i - 1][0] != '\0') {
            printf("Please enter Employees first name.\n ");
            gets(charTempArray);
            strcpy(charFirstNames[i], charTempArray);
            printf("Please enter Employees last name.\n ");
            gets(charTempArray);
            strcpy(charLastNames[i], charTempArray);
            printf("Please enter Employees salary.\n ");
            gets(charTempSal);
            intCharConv = atoi(charTempSal);
            intSalaries[i] = intCharConv;
            intArraySize = i;
        }
        else {
            break;
        }

首先,当
i=0
时,您的
if
将尝试访问数组边界之外的元素。其次,您应该在获得名字后立即测试空名字:

for(i = 0; i < 50; ++i)
{
    printf("Please enter Employees first name.\n ");
    gets(charTempArray);
    strcpy(charFirstNames[i], charTempArray);
    if(charTempArray[0] == 0)
        break;
    printf("Please enter Employees last name.\n ");
    gets(charTempArray);
    strcpy(charLastNames[i], charTempArray);
    printf("Please enter Employees salary.\n ");
    gets(charTempSal);
    intCharConv = atoi(charTempSal);
    intSalaries[i] = intCharConv;
    intArraySize = i;
}
(i=0;i<50;++i)的

{
printf(“请输入员工的名字。\n”);
获取(charTempArray);
strcpy(charFirstNames[i],charTempArray);
if(charTempArray[0]==0)
中断;
printf(“请输入员工姓氏。\n”);
获取(charTempArray);
strcpy(charLastNames[i],charTempArray);
printf(“请输入员工工资。\n”);
获取(ChartTempsal);
intCharConv=atoi(图表时间);
intSalaries[i]=intCharConv;
intArraySize=i;
}

我尝试了这个方法,但是我忘记了支撑for循环,在循环外有一个中断,所以它不起作用。谢谢您。
for(i = 0; i < 50; ++i)
{
    printf("Please enter Employees first name.\n ");
    gets(charTempArray);
    strcpy(charFirstNames[i], charTempArray);
    if(charTempArray[0] == 0)
        break;
    printf("Please enter Employees last name.\n ");
    gets(charTempArray);
    strcpy(charLastNames[i], charTempArray);
    printf("Please enter Employees salary.\n ");
    gets(charTempSal);
    intCharConv = atoi(charTempSal);
    intSalaries[i] = intCharConv;
    intArraySize = i;
}