如果输入-1,我希望我的for循环中断,但在这种情况下似乎不起作用。我试过几种不同的方法,但似乎没有一种方法能把它弄坏。
struct employee{
char name[30];
float rate;
float hrsWorked;
};
int main()
{
struct employee staff[5];
int placeholder;
for(int i = 0; i < 5; i++){
printf("Enter name: ");
scanf("%d", &placeholder);
fgets(staff[i].name, sizeof(staff[i].name), stdin);
if (staff[i].name[0] == -1){
break;
}
}
}
您要在name
中存储一串字符,因此-
和1
是两个不同的字符。
这个应该可以工作:
if (staff[i].name[0] == '-' && staff[i].name[1] == '1') break;
首先,name
是char
数组。因此,if name[0] == -1
直接转换为char
的ASCII表示形式。由于'-1'
在技术上是2个字符,因此它们将这样分开:name[0] : -
(其中45是ASCII值)和name[1] : 1
。
要解决这个问题,您可以这样做:
if (staff[i].name[0] == '-' && staff[i].name[1] == '1')
更多信息在ASCII, https://www.ascii-code.com/
您可以使用placeholder
来突破循环
if (placeholder == -1){
break;
}
也可以使用strcmp
注意:必须包含
头文件
if (strcmp(staff[i].name, "-1n") == 0){
break;
}