加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C-将结构数组设置为null

发布时间:2020-12-16 09:44:18 所属栏目:百科 来源:网络整理
导读:很抱歉,如果我有点困惑. 我试图填写一个结构数组,其中包含我从输入文件中读取的值.我在读取文件中的值时没有任何问题.但是当文件很小并且没有完全填充数组时,剩下的结构中有随机值,我想将这些结构完全设置为NULL.我试图这样做,因为我想通过这个填充的结构数
很抱歉,如果我有点困惑.

我试图填写一个结构数组,其中包含我从输入文件中读取的值.我在读取文件中的值时没有任何问题.但是当文件很小并且没有完全填充数组时,剩下的结构中有随机值,我想将这些结构完全设置为NULL.我试图这样做,因为我想通过这个填充的结构数组并打印它的值,我需要从文件中看到合法的数组值.

到目前为止,这是我的代码

struct function {
    char name[20];
    int parameterNumer;

};


int main(int argc,const char * argv[])
{
    struct function functionList[10];
    int i =0,j;
    int portNumber;
    char *configFile = argv[1];
    FILE *fp;

    fp = fopen(configFile,"r");
    if(fp == NULL) {
        perror("File not found");
        exit(1);
    }

    fscanf(fp,"%d",&portNumber);
    while(fscanf(fp,"%s %d",functionList[i].name,&functionList[i].parameterNumer) == 2) {
        i++;
    }
    functionList[i] = NULL; //getting an error here

    for(j = 0; functionList[j] != NULL; j++) {  //and here
        printf("%s %d",functionList[j].name,&functionList[j].parameterNumer);
    }


    return 0;

}

解决方法

初始化数组:

/* Remaining elements zero-d. */
struct function functionList[10] = { { "",0 } };

如果空字符串或零表示数组中未填充的条目,然后使用空字符串或零int来终止for:

for(j = 0; strlen(functionList[j].name); j++) {

for(j = 0; functionList[j].parameterNumber; j++) {

另外,防止while中的functionList超出访问范围:

while(i < 10 && fscanf(fp,&functionList[i].parameterNumer) == 2)
{
    i++;
}

请注意,此后的i值也将为后续for循环提供终止条件:

for (j = 0; j < i; j++) {

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读