gpt4 book ai didi

c - c语言用字符串变量触发break关键字

转载 作者:太空宇宙 更新时间:2023-11-04 04:16:41 24 4
gpt4 key购买 nike

我是一个编程菜鸟。我正在独自完成这项任务,现在我碰壁了,我们将不胜感激。

我做了一个循环,在那里我输入了姓名、费率和小时数,如果用户输入 -1,它将打破循环并进入下一个循环。一切都很好,除非我输入 -1 作为名称,它不会中断。我知道变量是字符串,-1 是整数,我只是想不通我应该怎么做才能让它工作。

这是我的愚蠢代码的一部分。

for (i = 0; i < size; i++)

{
puts("\ntype name: (type -1 to quit) \n");
scanf_s("%s", &name[i], 20);
puts("\ntype hourly rate: (type -1 to quit) \n");
scanf_s("%f", &rate[i]);
puts("\ntype hours worked: (type -1 to quit) \n");
scanf_s("%f", &hours[i]);
//if break keyword needed.

if (*name == -1 || rate[i] == -1 || hours[i] == -1)
{
break;
}

最佳答案

你可以使用 strcmp()喜欢

scanf_s("%19s", name[i], 20);
if(strcmp(name[i], "-1")==0)
{
break;
}

strcmp() 比较两个字符串,如果相同则返回 0

前导空格不是问题,将被忽略。所以 -1 仍将被读取为 -1

否则,您可以先将 name[i] 中的字符串转换为整数,然后查看结果数是否为 -1。对于该方法,请参阅 How to convert a string to integer in C? .


此外,如果 name[i] 是一个大小为 20 的字符数组,而不是

scanf_s("%s", &name[i], 20);

你可能需要

scanf_s("%19s", name[i], 20);

因为 name[i] 本身就是地址,因为数组名称在 C 中衰减为指向其第一个元素的指针。

参见 thisthis .

关于c - c语言用字符串变量触发break关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51345449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com