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++) { (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |