如何从结构体数组中删除一个元素?

2023-12-09

如何从类型结构数组中删除元素?假设我注册了一个项目,然后想删除它,我该怎么做?删除函数位于代码末尾。我想通过给出删除该项目varunummer(身份证号码)。有人知道该怎么做吗?

#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define WORDLENGTH 30
#define MAX 5
struct varor {
    int varunummer;
    char namn[WORDLENGTH];
    int lagersaldo;
};

int readLine(char s[], int length); 
int ifVarunummerExist(int varunummer, const struct varor reg[], int nrOfGoods);
void registerVaror(struct varor reg[], int *nrOfGoods);
void getPrint(const struct varor reg[], int nrOfGoods);
void avregristreraVaror(struct varor reg[], int nrOfGoods);

int main(void) {
    struct varor vRegister[WORDLENGTH];
    int nrOfGoods = 0;
    int run = 1;
    while (run) {
        char choice;
        printf("\n\t\tMeny - Lager Program\n\n\
        (1) Register\n\b\b\b\b\
        (2) Print\n\
        (3) Delete\n\
        (4) Quit\n");
        scanf(" %c%*c", &choice);

        if (choice=='1')
            registerVaror(vRegister, &nrOfGoods);
        if (choice=='2')
            getPrint(vRegister, nrOfGoods);
        if (choice=='3')
            avregristreraVaror(vRegister, nrOfGoods);
        else if (choice=='4')
            run = 0;
    }
    return 0;
}

int ifVarunummerExist(int varunummer, const struct varor reg[], int nrOfGoods) {
    int i;
    for (i = 0; i < nrOfGoods; i++)
        if(reg[i].varunummer == varunummer)
            return i;
    return -1;
}

int readLine(char s[], int length) {
    int ch, i=0;
    while (isspace(ch=getchar()));
    while (ch != '\n' && ch != EOF) {
        if (i < length)
            s[i++] = ch;
        ch = getchar();
    }
    s[i] = '\0';
    return i;
}

void registerVaror(struct varor reg[], int *nrOfGoods) {
    char namn[WORDLENGTH], tmp[WORDLENGTH];
    int varunummer, lagersaldo;
    if (*nrOfGoods == MAX) {
        printf("\nError! Finns inte plats kvar!\n");
        return;
    }
    printf("Ange varunummer: ");
    scanf("%d", &varunummer);
    if (ifVarunummerExist(varunummer, reg, *nrOfGoods) >= 0) {
        printf("\nVarunummer finns redan!\n");
        return;
    }
    reg[*nrOfGoods].varunummer = varunummer;
    printf("Ange namn: ");
    readLine(reg[*nrOfGoods].namn, WORDLENGTH);

    printf("Ange lagersaldo :");
    scanf("%d", &reg[*nrOfGoods].lagersaldo);
    //reg[*nrOfGoods]=createVara(varunummer,namn,lagersaldo);
    (*nrOfGoods)++; 
}

void getPrint(const struct varor reg[], int nrOfGoods) {
    int i;
    printf("\nVarunummer \t Namn \t\t\t Lagersaldo\n");
    for (i = 0; i < nrOfGoods; i++) {
        printf(" %d \t\t %s \t\t\t %d\n",reg[i].varunummer,reg[i].namn,reg[i].lagersaldo);
    }
}

void avregristreraVaror(struct varor reg[], int nrOfGoods) {
    int run = 1;
    while (run) {
        char choice;    
        printf("\n (1) Delete \n (2) Exit");
        scanf(" %c", &choice);
        //DELETE IF CHOICE 1---------
        if (choice == '1') {
            int i, varunummer;
            printf("Ange varunummer: ");
            scanf("%d", &varunummer);
            for (i = varunummer + 1; i < MAX; i++) {
                reg[i - 1] = reg[i];
            }
            reg[i] = 0;
        }
    }
    //QUIT TO MY MENU CHOICE 2--------
    if (choice == '2')
        run = 0;
}

您可以尝试在 for 循环中迭代数组,直到您的 varunummer 与结构的属性匹配。沿着这些思路(假设您正在搜索具有varunummer = varunummerToLookFor),这会将数组中的所有元素从删除点开始移动 1,因此,生成一个与之前的序列相同但删除了所需元素的数组。希望有帮助!

for(int i = 0, i < varorArraySize, i++){
if(varunummerToLookFor == varorArray[i].varunummer){
for (i = pos; i <  varorArraySize - 1; i++)
            {
            varorArray[i] = varorArray[i + 1];


           } 
       }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从结构体数组中删除一个元素? 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • 如何获得 xPy 的所有排列?

    我想计算一组大小 X 的大小 Y 的所有排列 也就是说 如果我有 1 2 3 并且想要大小 2 3P2 的所有排列 那么它将是 1 2 1 3 2 1 2 3 3 1 3 2 GSL和C STL都只提供我能看到的xPx 有人能给我指出一个可
  • Eclipse:Android 依赖项

    我已将项目中的 Google AdMob 从 6 2 1 更新到 6 4 1 但不知何故 eclipse 失败 你可以在这里看到它 这是错误消息所需库的存档 项目 中的 C Users libs GoogleAdMobAdsSdk 6 2
  • 递归评估 JSON 对象

    我们正在使用 JSON 库https github com octomix josson 我的示例 JSON 对象 data A 1688 B 1363 C calc A B A data A B data B D calc B C B d
  • C# 将 delphi TColor 转换为颜色(十六进制)

    这些数字存储在数据库中 它们源自 Delphi 代码 尽管我认为他们遵循某种标准 我努力了Color FromArgb 255 但我知道第一个是红色 在 delphi 方面 而在 ASP NET 中它认为它是蓝色的Color A 0 R 0
  • VB 中的 shell 命令

    由于某种原因 当我尝试在 VB 的 shell 命令中使用 符号时 它们似乎没有像应有的那样工作 当我尝试使用与符号在同一行上将两个命令链接在一起时 我收到错误 filenotfoundexception 未找到未处理的文件 我尝试运行的命
  • 如何从片段中的工具栏在列表视图中搜索

    我使用此代码从 ListView 中的 MainActivity 工具栏进行搜索 SearchView searchView Override public boolean onCreateOptionsMenu Menu menu get
  • 为什么 Cython 强制在函数开头声明局部变量

    这是作为评论提出的Cython 复制构造函数 以下代码无法在 Cython 中编译 def bar int i if i 0 return i else cdef int j j i 1 return j 而这个是完全正确的 def foo
  • Java垃圾收集器如何处理自引用?

    希望是一个简单的问题 以循环链表为例 class ListContainer private listContainer next lt gt public void setNext listContainer next this next
  • 如何读取AngularJS中的响应头?

    我的服务器返回这种标头 Content Range 0 10 0 我尝试以角度阅读此标题 但没有成功 var promise http get url params query then function response console
  • 如何使用 Python Discord 机器人发送附件

    我希望我的机器人在调用时将文件 不一定是图像 可以是文本文件 发送到通道 这是我的代码片段 bot command pass context True async def send ctx area ctx message channel
  • 如何在 IPython Notebook 中隐藏一个特定单元格(输入或输出)?

    有没有一种方法可以有选择地隐藏 IPython 笔记本中的一个特定输入或输出单元 我只能找到下面的代码来显示 隐藏所有输入单元格 http blog next Genetics net e 102 但是 如果我只想隐藏笔记本的第一个输入单元
  • 单击VBS中包含特定字符串的链接

    我正在尝试运行一个自动 vbs 脚本 单击页面上的链接 我有以下形式的东西 Const READYSTATE COMPLETE 4 Set IE CreateObject INTERNETEXPLORER APPLICATION IE Vi
  • 选择 2 个字段并返回一个具有不同值的排序数组

    假设我们有以下文档 a 1 b 2 a 2 b 0 a 3 b 1 我想要一个将返回的查询 0 1 2 3 我想知道是否有一种方法可以比以下更快地做到这一点 只需进行 2 个查询 其中一个选择a 另一个选择b然后合并到我的应用程序中 使用m
  • 登录fft结果

    我正在尝试根据测试目标计算 MTF 我很容易计算出扩展函数 但 FFT 结果对我来说不太有意义 总而言之 这些值似乎交替变化 反映了我的期望 为了测试 我使用了一个简单的方波和 numpy from numpy import fft dat
  • 使用 UIPanGestureRecognizer 将 UIView 拖动到有限区域内

    我想允许用户将 UIView 拖动到其超级视图的有限区域内 尝试以下简单代码 func handlePanForImage recognizer UIPanGestureRecognizer if let myView recognizer
  • 当另一个动画正在进行时,Jquery 动画

    我正在使用这里给出的简单缓动动画JQuery 缓动插件即 将 div 从 left 200 缓动到 left 0 并返回 上页的最后一个示例 我在一个容器 div 中有多个 div 我想要做的是通过以下方式为 4 个 div 设置动画 1
  • Windows Phone 7.1 应用程序中的自动登录过程

    在我的 Windows Phone 应用程序中 银光应用程序 我希望用户在成功登录后自动登录到应用程序 即我不希望用户每次都登录 我通过一个隔离存储文件概念 即首先我创建了 一个目录 我创建了一个隔离存储文件流并将电子邮件和密码凭据存储在某
  • 如何将当前日期与日期选择器中的用户输入日期进行比较

    我试图限制日期和时间 我希望如果用户尝试设置小于当前日期的日期 那么它应该显示警报 并且随着时间的推移也要做同样的事情 我正在使用日期和时间选择器和我的onDateSetListener and onTimeSetListener如下 Da
  • 带有像素图的透明 QLabel

    我有一个 QLabel 我使用 setpixmap 在上面放置了一个图像 该图像有 Alpha 通道 QLabel 位于 QWidget 上 该 QWidget 具有由图像指定的边框图像 以便重新缩放图像以填充 QWidget 在QLabe
  • 如何从结构体数组中删除一个元素?

    如何从类型结构数组中删除元素 假设我注册了一个项目 然后想删除它 我该怎么做 删除函数位于代码末尾 我想通过给出删除该项目varunummer 身份证号码 有人知道该怎么做吗 include