C:在数组上打印INT值-如何停止在NULL值上打印?

时间:2020-10-24 19:07:24

标签: arrays c loops

我需要打印存储在int数组中的值,当遇到NULL字符('\0')时停止。

所以我有这个代码:

const int display[10] = {1,4,8,2,0,9,2};

int main(){
    int i = 0;

    for (i = 0; i < 10; i++){
        if (display[i] == '\0'){
            break;
        }
        printf("%d\n", display[i]);

    }
    exit(0);
}

我希望打印display[10]的所有值,或者在遇到'\0'时中断,但是我的代码在display[4](0)处中断,而不是一直持续到display[6]

关于如何实现此目标的任何建议,避免在数组末尾打印空字符?

3 个答案:

答案 0 :(得分:2)

空字符'\0'等于0。这就是循环中仅输出前四个元素的原因。遇到0时会中断。

答案 1 :(得分:2)

在C中,'\0'==0。如果只想打印已初始化的字段,请在最后一个已初始化的字段之后放置一个前哨(例如,负数),并在遇到前哨或计数到10时中断循环。

const int display[10] = {1,4,8,2,0,9,2,-1 /* a sentinel */};
for (i = 0; i < 10 && display[i] >= 0; i++) {

答案 2 :(得分:0)

您不需要检查是否存在null。首先声明数组而不初始化总数。然后,您可以通过检查数组元素的总数来运行循环。现在的问题是如何获取元素数量?很简单。

const int arr[]= { 1, 2, 3};
int size = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < size; i++) {
    printf("%d", arr[i]);
}
相关问题