以间隔返回数组元素

时间:2014-01-26 04:39:45

标签: c arrays intervals

我有一个x元素数组,我试图以5个元素间隔打印,因为用户按下一个按钮。如果我的数组是int a[14] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14};,则示例显示为。

1,2,3,4,5
next
6,7,8,9,10
next
11,12,13,14
next
1,2,3,4,5
..
..

我应该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

for(i=0;i<x;i+=5)
{
 for(j=i;((j<i+5) && (j<x));j++)
 {
  printf("%d,",a[j]);
 }
 //Wait for next character here
 printf("\nnext\n");
}

编辑:修复了5的非倍数数组代码的问题。

答案 1 :(得分:0)

#include <stdio.h>

void interval_print(int *a, int *end, int len){
    static int *start=NULL;
    static int *current;
    int i;
    if(start != a)
        current = start = a;
    for(i=0;i<len && current != end;++i)
        printf("%d%c", *current++, (i==len-1 ? '\n' : ','));
    if(current == end){
        printf("%d\n", *current);
        current = start;
    }
}

int main(){
    int a[14] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14};
    for(;;){
        char ch;
        interval_print(a, &a[13], 5);
        printf("next\n");
        printf("continue?\ninput y or n : ");
        scanf(" %c", &ch);
        if(ch == 'n' || ch == 'N')
            break;
    }
    return 0;
}