gpt4 book ai didi

c - 我不知道是什么导致了段错误

转载 作者:行者123 更新时间:2023-12-04 10:26:36 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的“日记”,您可以在其中添加 worker ,然后写下他们工作了多少小时。但是每次我到达 switch 语句时,我都会遇到段错误。我不知道是什么原因造成的,而且我的知识还没有达到我自己能找到它的水平。代码:

include <stdio.h>
include <stdlib.h>
include <string.h>

int vybera(int pocet){
int vyber;
int i;
printf("\nKtery zamestnanec?\n");
for(i = 0; i < pocet; i++){
printf("%d\n", i + 1);
}
scanf("%d", vyber);
return vyber;
}

int main(int argc, char** argv) {
int worker;
int pocet;
int i;
int vyber;
int pomoc;
int odprac = 0;
printf("Kolik zamestnancu chcete pridat: ");
scanf("%d%*c", &pocet);
char workforce[pocet][100];
printf("Zadejte %d jmen: \n", pocet);
for(i = 0; i < pocet; i++){
gets(workforce[i]);
}
for(i = 0; i < pocet; i++){
printf("%s\n", workforce[i]);
}
vyber = vybera(pocet);
switch(vyber){
case 1:
worker = vyber - 1;
printf("Vybrali jste %s.\n", workforce[worker]);
printf("Pocet odprac. hodin: ");
scanf("%d", pomoc);
odprac += pomoc;
strcat(workforce[worker], (", %c", odprac + '0'));
break;
case 2:
worker = vyber - 1;
printf("Vybrali jste %s.\n", workforce[worker]);
printf("Pocet odprac. hodin: ");
scanf("%d", pomoc);
odprac += pomoc;
strcat(workforce[worker], (", %c", odprac + '0'));
break;
case 3:
worker = vyber - 1;
printf("Vybrali jste %s.\n", workforce[worker]);
printf("Pocet odprac. hodin: ");
scanf("%d", pomoc);
odprac += pomoc;
strcat(workforce[worker], (", %c", odprac + '0'));
break;
case 4:
worker = vyber - 1;
printf("Vybrali jste %s.\n", workforce[worker]);
printf("Pocet odprac. hodin: ");
scanf("%d", pomoc);
odprac += pomoc;
strcat(workforce[worker], (", %c", odprac + '0'));
break;
case 5:
worker = vyber - 1;
printf("Vybrali jste %s.\n", workforce[worker]);
printf("Pocet odprac. hodin: ");
scanf("%d", pomoc);
odprac += pomoc;
strcat(workforce[worker], (", %c", odprac + '0'));
break;
default:
printf("Spatny vyber.\n");
}
for(i = 0; i < pocet; i++){
printf("%s\n", workforce[i]);
}
return (EXIT_SUCCESS);
}

我真的无计可施,需要我能得到的一切帮助。尽管在段错误主题上有很多问题,但我还是要发布这个的原因是他们都没有使用我的代码。感谢您的帮助和耐心等待。编辑:我来自捷克,因此为什么我的大部分变量和我所有的 printf 输出都是捷克语。仅供引用。

最佳答案

更改:scanf("%d", vyber); scanf("%d", &vyber) 对 pomoc 做同样的事情;
说明:因为 vyber 变量是 int 你需要用“&”符号显式传递地址值,这与字符串(隐式传递其地址)不同。段错误表明您正在尝试访问不属于您的内存。在这种情况下是 vyber。

关于c - 我不知道是什么导致了段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43301549/

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