2017-02-09 75 views
-4

在字符串中,我们可以通过“\ 0”知道最后一个字符串,但是如何知道数组的下一个空闲位置。在这里,我把代码:如何知道数组的下一个空闲位置

#include <stdio.h> 

int main(){ 
    int notes[10]; 
    int i, usuari; 

    printf("Put a number"); 
    scanf("%i", &usuari); 

    for (i=0;i<usuari;i++){ 
     scanf("%i", &notes[i]); 
    } 
} 

用户会给出一个数(可变usuari)。我怎么知道用户给出的数字旁边的位置是免费的?我怎样才能打印它们?

+5

数组没有“空闲位置”。 C没有字符串类型。数组是如何使用的都是约定。想想吧! – Olaf

+0

那么,我怎样才能打印阵列结束数字旁边的空闲位置? – Abdullah

+0

定义“免费”这个词? – Sabrina

回答

1

你通常会做的是将你的数组初始化为一些永远不会输入的值,例如-1。所以,你可以定义这样的笔记:

int notes[10] = {-1}; 

然后你可以在使用它之前检查笔记[i] == -1。但是,我只是猜测你的意思是unused

编辑:

如上所述,只是初始化第一个元素。实际上,你必须初始化这样的注释:

int notes[10] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,}; 

或循环

+1

请注意,只有'音符[0]'会被初始化为'-1'。 C99改进初始化程序中更令人费解的疏忽之一是能够在初始化程序中重复某个值。由于Fortran已经“永远”(自Fortran 66,无论如何),这是非常奇怪的。 –

+0

没错。你必须像这样初始化它:'int notes [10] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,}; – bruceg

0

要么使用一个终值,类似于C字符串如何使用终端值,表示结束...或商店下一个值的位置,类似于你的循环知道在哪里存储下一个值。

假设你移动你的初始化i之外循环的,敷用户输入到嵌套循环,像这样:

#include <stdio.h> 

int main(){ 
    int notes[10]; 
    int i = 0, usuari; 

    for (;;) { 
     printf("Put a number"); 
     scanf("%i", &usuari); 

     for (;i<usuari;i++){ 
      scanf("%i", &notes[i]); 
     } 
    } 
} 

如何最内部的循环知道在哪里存储的下一个值?当然,这个位置在变量的生存期内存储和递增,你存储的长度,是吗?