大佬教程收集整理的这篇文章主要介绍了从C中的数组中删除零条目,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试:
我试图循环遍历数组中的每个值,并检查条目是否不等于零.如果这个条件为真,那么我试图用原始数组值填充一个新数组.
#include <stdio.h> #include <stdlib.h> #include <String.h> int main() { int x[] = { 0,8 }; int i; int x_upd[100]; for (i = 0; i < 9; i++) { if (x[i] != 0) { x_upd[i] = x[i]; // if true,populate new array with value } } for (i = 0; i < 9; i++) { printf(" Peak updated %d\t",x_upd[i]); // } return 0; }
输出没有根据需要给出值{1,8}.相反,我在以前的零位置获取垃圾值.
我在这里做错了什么建议?我需要其他声明吗?
#include <stdio.h> int * remove_copy(const int *in,size_t n,int *out,int value) { for (size_t i = 0; i != n; i++) { if (in[i] != value) *out++ = in[i]; } return out; } int main( void ) { int a[] = { 0,8 }; int b[sizeof(a) / sizeof(*a)]; const size_t N = sizeof(a) / sizeof(*a); int *last = remove_copy(a,N,b,0); for (int *first = b; first != last; ++first) { printf("%d ",*first); } putchar('\n'); return 0; }
程序输出是
1 2 3 7 8
size_t remove_copy(const int *in,int value) { size_t m = 0; for (size_t i = 0; i != n; i++) { if (in[i] != value) out[m++] = in[i]; } return m; }
至于你的代码,那么你需要使用一个额外的变量来保持索引在目标数组中.例如
int m = 0; for ( i = 0; i < sizeof( x ) / sizeof( *x ); i++ ) { if ( x[i] != 0 ) { x_upd[m++] = x[i]; // if true,populate new array with value } } for ( i = 0; i < m; i++ ) { printf(" Peak updated %d\t",x_upd[i] ); // }
实际上,第一循环对应于上面所示的第二功能实现.
以上是大佬教程为你收集整理的从C中的数组中删除零条目全部内容,希望文章能够帮你解决从C中的数组中删除零条目所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。