C语言 我如何确保我的字符不是一个负数



如果输入-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;

首先,namechar数组。因此,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;
}

最新更新