写点什么

c 语言不输出空数据 (全面覆盖)

  • 2022 年 3 月 06 日
  • 本文字数:1886 字

    阅读完需:约 6 分钟

c 语言不输出空数据(全面覆盖)
  • 本文将采用 2-3 种方式解决空值的问题,实验 c 语言基本类型,涵盖数组,指针,结构体三种情况

解决方案

一.通过数组的自身性质,让其值大于零


核心代码


 if (array[i]>0)  {    // 打印语句  }
复制代码

1. short 数组测试

源码展示


#define MAXSIZE 20
int main(){
short ss[MAXSIZE] = {1,2,3,4,5,6}; int i = 0; for (i = 0; i < MAXSIZE; i++) { if (ss[i]>0) { printf("ss[%d] = %d\n",i,ss[i]); } }}
复制代码


  • 打印结果


错误情况



正确结果



2. int 数组测试

源码展示


#define MAXSIZE 20
int main(){
int arrary[MAXSIZE] = {1,2,3,4,5,6}; int i = 0; for (i = 0; i < MAXSIZE; i++) { if (arrary[i]>0) { printf("arrary[%d] = %d\n", i, arrary[i]); } }}
复制代码

3. long 数组测试

源码展示


 #define MAXSIZE 20
int main(){
long arrary[MAXSIZE] = {1,2,3,4,5,6}; int i = 0; for (i = 0; i < MAXSIZE; i++) { if (arrary[i]>0) { printf("arrary[%d] = %d\n", i, arrary[i]); } }
}
复制代码

4. float 数组测试

源码展示


#define MAXSIZE 20
int main(){
float arrary[MAXSIZE] = {1.0,2.0,3.0,4.0,5.0,6.0}; int i = 0; for (i = 0; i < MAXSIZE; i++) { if (arrary[i]>0) { printf("arrary[%d] = %f\n", i, arrary[i]); } }
}
复制代码

5. float 数组测试

源码展示


#define MAXSIZE 20
int main(){
double arrary[MAXSIZE] = {1.0,2.0,3.0,4.0,5.0,6.0}; int i = 0; for (i = 0; i < MAXSIZE; i++) { if (arrary[i]>0) { printf("arrary[%d] = %f\n", i, arrary[i]); } }}
复制代码

6. char 数组测试

源码展示


#define MAXSIZE 20
int main(){
char arrary[MAXSIZE] = {'a','b','c','d','e','f'}; int i = 0; for (i = 0; i < MAXSIZE; i++) { if (arrary[i]>0) { printf("arrary[%d] = %c\n", i, arrary[i]); } }}
复制代码


二.通过字符型数组的最后一位是'\0'过滤(中文的时候,其他类型比如数组,字母符号还是方法一)


核心代码


   if (arrary[j] == '\0')  {    break;   }
复制代码

1.英文

源码展示


 #define MAXSIZE 20
int main(){
char arrary[MAXSIZE] = {'a','b','c','d','e','f'}; int i = 0; for (i = 0; i < MAXSIZE; i++) { if (arrary[i] == '\0') { break; } printf("arrary[%d] = %c\n", i, arrary[i]); }
}
复制代码

2.中文

源码展示


#define MAXSIZE 20
int main(){
char arrary[MAXSIZE] = {"好好学习天天向上!"}; int i = 0; int j = 1; for (i = 0; i <= MAXSIZE; i+=2) { if (arrary[i] == '\0') { break; } if (arrary[i] == '!') { printf("arrary[%d] = %c\n", j++, arrary[i]); } else { printf("arrary[%d] = %c%c\n", j++, arrary[i], arrary[i + 1]); } }
}
复制代码


三.指针的方式处理


核心代码


  if (*(p + i) == '\0') {      break;      }
复制代码


实例


#define MAXSIZE 20
int main(){
char arrary[MAXSIZE] = {"好好学习天天向上!"}; char *p; p = arrary;

int i = 0; int j = 1; for (i = 0; i <= MAXSIZE; i+=2) { if (*(p+i) == '\0') { break; } if (*(p + i) == '!') { printf("arrary[%d] = %c\n", j++, *(p + i)); } else { printf("arrary[%d] = %c%c\n", j++, *(p + i), *(p + i+1)); } }
}
复制代码


其他复杂情况


  • 参考

[c 语言怎么避免打印空数据?] ( https://xie.infoq.cn/article/83af0d5d107c274b29a729b81 )


四.while 方式处理(最佳)


核心代码


while (*(p + i) != '\0')  {    printf("arrary[%d] = %c%c\n", j++, *(p + i), *(p + i + 1));    i += 2;  }
复制代码


实例


#define MAXSIZE 20
int main(){
char arrary[MAXSIZE] = {"好好学习天天向上!"}; char *p; p = arrary; int i = 0; int j = 1; while (*(p + i) != '\0') { if (*(p + i) == '!') { printf("arrary[%d] = %c\n", j++, *(p + i)); } else { printf("arrary[%d] = %c%c\n", j++, *(p + i), *(p + i + 1)); } i += 2; }
}
复制代码


其他复杂情况


  • 参考(结构体处理方法)

[C 语言中如何输出汉字 ; 如何用 C 语言汉字编码输出汉字 (超全版)](https://xie.infoq.cn/article/b6ef86bae6970d179a4377ef9 )


发布于: 21 小时前阅读数: 10
用户头像

十年磨一剑,一剑破万法 2018.01.16 加入

JAVA开发五年,希望早日成就架构师

评论

发布
暂无评论
c 语言不输出空数据(全面覆盖)_c_北极的大企鹅_InfoQ写作平台