C语言 我得到了一个SEGMENTATION FAULT错误,但我无法找出代码的错误[关闭]

ghg1uchk  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(126)

**已关闭。**此问题需要debugging details。它目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答这个问题。
9天前关闭。
社区在9天前审查了是否重新打开此问题,并将其关闭:
原始关闭原因未解决
Improve this question

zsh: segmentation fault  "/Applications/XAMPP/xamppfiles/htdocs/demo/"03_EMP

这是我大学第一年的代码,现在我在第三年,但我仍然不知道它有什么问题。
为了避免这个错误“看起来你的帖子大部分是代码;请多加一些细节。

#include<stdio.h>
#include<string.h>
struct emp{
    int no, sal, age;
    char name[10], desi[30];
};
int main(){
    struct emp e[5];
    int n[5], temp = 0, x = 5;
    for (int i = 0; i<5; i++){
        printf("-->Enter Employee %d details.\n",i+1);
        printf("\tNo: ");
        scanf("%d",&e[i].no);
        printf("\tName: ");
        scanf("%s",e[i].name);
        printf("\tSalary: ");
        scanf("%d",&e[i].sal);
        printf("\tDesignation: ");
        scanf("%s",e[i].desi);
        printf("\tAge: ");
        scanf("%d",&e[i].age);
        n[i] = e[i].sal;
    }
    for (int i = 0; i<x; ++i){
        for(int j=i+1;i<x;++j){
            if (n[i]<n[j]){
                temp = n[i];
                n[i] = n[j];
                n[j] = temp;
            }
        }
    }
// 1: Display the information of employee who’s age is greater
// than 30 and designation=”manager”.
    for (int i = 0; i < 5; i++){
        printf("%d ",n[i]);        
        if (e[i].age>30 && !strcmp(e[i].desi,"manager")){
            printf("\n-->Info who's age>30 && Designation = \"manager\"");
            printf("\tNo: %d\n",e[i].no);
            printf("\tName: %s\n",e[i].name);
            printf("\tDesignation: %s\n",e[i].desi);
            printf("\tSalary: %d\n",e[i].sal);
            printf("\tAge: %d\n",e[i].age);
        }
    }
// 2: Display the information of all employees according to the
    for (int i = 0; i < 5; i++){
        for (int j =0; i<5;j++){
            if (n[i]==e[j].sal){
                printf("\n-->Info who's age>30 && Designation = \"manager\"");
                printf("\tNo: %d\n",e[i].no);
                printf("\tName: %s\n",e[i].name);
                printf("\tDesignation: %s\n",e[i].desi);
                printf("\tSalary: %d\n",e[i].sal);
                printf("\tAge: %d\n",e[i].age);
            }
        }
    }
    return 0;
}

toe95027

toe950271#

int j=i+1;i<x;++j => j将增长并且永远不会停止增长(并且您将访问其边界之外的数组),因为i < x将始终为true。
在你的代码中的更多地方出现同样的错误。
如果你不使用无意义的变量名,你就不会有这个问题。

相关问题