Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中访问字符串数组_C_String_Initialization - Fatal编程技术网

在C语言中访问字符串数组

在C语言中访问字符串数组,c,string,initialization,C,String,Initialization,如何在C中声明字符串数组。 是这样的吗 char str[100][100] ={"this","that","those"}; 如果是,如何访问这些值。。我可以这样穿越吗? (它没有给出任何编译错误..但显示了一些额外的垃圾字符) 是否需要在eac字符串的末尾添加“\0”。例如: char c[100][100]={"this\0","that\0"} 是的,您可以这样声明字符串数组 不,您不能这样遍历它,外部循环的条件不好-字符串(char*)永远不会等于字符'\0'。内环很好 不需要

如何在C中声明字符串数组。 是这样的吗

char str[100][100] ={"this","that","those"};
如果是,如何访问这些值。。我可以这样穿越吗? (它没有给出任何编译错误..但显示了一些额外的垃圾字符)

是否需要在eac字符串的末尾添加“\0”。例如:

 char c[100][100]={"this\0","that\0"}
  • 是的,您可以这样声明字符串数组

  • 不,您不能这样遍历它,外部循环的条件不好-字符串(
    char*
    )永远不会等于字符
    '\0'
    。内环很好

  • 不需要,您不需要添加将自动发生的
    '\0'

  • 是的,您可以这样声明字符串数组

  • 不,您不能这样遍历它,外部循环的条件不好-字符串(
    char*
    )永远不会等于字符
    '\0'
    。内环很好

  • 不需要,您不需要添加将自动发生的
    '\0'

  • 如何在C中声明字符串数组

    这是可以的,但是在处理这些字符串时必须非常小心

    我可以这样穿越吗

    请注意,第一个for循环中的条件:
    for(i=0;c[i]!='\0';++i)
    可能是错误的,并且将失败,因为
    c[i]
    是一个地址不是0的数组。您可能应该按数字迭代外部数组[直到读取所有元素],而不是直到找到某个特定字符。您可以通过维护不同的变量
    n
    来实现这一点,该变量将指示数组当前有多少个元素

    是否需要在eac字符串的末尾添加“\0”。例如:

     char c[100][100]={"this\0","that\0"}
    
    否-编译器会将其添加到您的字符串中,无需将
    '\0'
    添加到字符串中即可

    如何在C中声明字符串数组

    这是可以的,但是在处理这些字符串时必须非常小心

    我可以这样穿越吗

    请注意,第一个for循环中的条件:
    for(i=0;c[i]!='\0';++i)
    可能是错误的,并且将失败,因为
    c[i]
    是一个地址不是0的数组。您可能应该按数字迭代外部数组[直到读取所有元素],而不是直到找到某个特定字符。您可以通过维护不同的变量
    n
    来实现这一点,该变量将指示数组当前有多少个元素

    是否需要在eac字符串的末尾添加“\0”。例如:

     char c[100][100]={"this\0","that\0"}
    

    否-编译器将其添加到您的程序中,不向字符串添加
    '\0'
    就可以了。

    c[i]是一个指针,因此它与'\0'
    因此,您应该检查c[i][0]
    当您输入类似“this”的字符串时,编译器将为您添加“\0”


    c[i]是指针,因此它与“\0”无关
    因此,您应该检查c[i][0]
    当您输入类似“this”的字符串时,编译器将为您添加“\0”



    那么外环的条件应该是什么呢?@Jinu,你可以查看cloudy goose的答案,以获得一个有效的例子。请注意数组已满的情况,因为在这种情况下,该答案不起作用。那么外循环的条件应该是什么?@Jinu,您可以查看cloudy goose的答案以获得一个有效的示例。请注意数组已满的情况,因为在这种情况下,该答案不起作用。因此,如果我只有两个元素,而剩余空间稍后被填充,那么这种情况将进行更多无用的迭代?如何避免?如果C的字符串少于100个,它也会失败。我已经更改了注释…在编辑您的注释之前添加了该注释…无论如何,我在该注释中的问题的答案是什么?@JinuJD:您可以维护一个不同的变量
    n
    ,它将指示数组中当前有多少字符串,并在
    i
    时迭代。否则,如果没有空字符串,可能会失败,或者如果一个空字符串,通常是可行的值将出现在数组的中间。因此,如果我只有两个元素,其余的空间稍后被填充,这个条件会做更多无用的迭代吗?如何避免?如果C的字符串少于100个,它也会失败。我已经更改了注释…在编辑您的注释之前添加了该注释…无论如何,我在该注释中的问题的答案是什么?@JinuJD:您可以维护一个不同的变量
    n
    ,它将指示数组中当前有多少字符串,并在
    i
    时迭代。否则,如果没有空字符串,则可能会失败,或者如果一个空字符串,通常是一个可行的值将出现在数组的中间。PrtTf(“%s”,C[i])将在索引<代码> i>代码>中打印字符串。这是一个好主意…谢谢……%s会打印空白吗?是的,打印直到EOF字符串到达为止,即'\' Primtf(“%s”,C[i])。将在索引
    i
    处打印字符串。这是一个好主意……谢谢……%s会打印空白吗?是的,打印直到达到eof字符串,即'\0',那么在外循环c[i]中这个条件是否足够=NULL(或仅仅是c[i])?@JinuJDNo,
    c[i]
    是一个地址,永远不会
    NULL
    。另外,如果
    c[i][0]
    :是否足够取决于数据。如果保证的字符串少于100个,并且保证空字符串在数组中不是可行值,并且保证数组中的第100个entre标记为[唯一]空字符串,那么它将起作用。那么在外循环c[i]中,这个条件是否足够=NULL(或仅仅是c[i])?@JinuJDNo,
    c[i]
    是一个地址,永远不会
    NULL
    。另外,如果
    c[i][0]
    :是否足够取决于数据。如果保证少于100个字符串,并且保证空字符串在数组中不是可行值,并且保证数组中的第100个entre标记为[唯一]空字符串,那么它将工作。