Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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中数组的s_C_Arrays_String_Loops_Character - Fatal编程技术网

遍历';C中数组的s

遍历';C中数组的s,c,arrays,string,loops,character,C,Arrays,String,Loops,Character,我有这样一个代码: char* s[4][10] = { "abc\0", "aab\0", "cbb\0" }; a要键入一个字符,如..'a',并遍历字符串数组,检查每个字符串上是否有“a”,然后计算有多少个 在这种情况下,我想要得到的是“abc”:1,“aab”:2,“cbb”:0。。。 如何执行循环以获得此结果?char input='\0'; char input = '\0'; scanf("%c", &input); int i, j; for(i=0; i<4;

我有这样一个代码:

char* s[4][10] = { "abc\0", "aab\0", "cbb\0" };
a要键入一个字符,如..'a',并遍历字符串数组,检查每个字符串上是否有“a”,然后计算有多少个

在这种情况下,我想要得到的是
“abc”:1
“aab”:2
“cbb”:0
。。。 如何执行循环以获得此结果?

char input='\0';
char input = '\0';
scanf("%c", &input);
int i, j;
for(i=0; i<4; i++)
{
    int count = 0;
    for(j=0;j<10;j++)
    {
         if(s[i][j] == input) count++;
    }
    printf("%s : %d", s[i], count);
}
scanf(“%c”,&input); int i,j;
对于(i=0;i,这里有一个演示程序,演示如何处理不同的数组声明

#include <stdio.h>

int main(void) 
{
    char* s[4][10] = { { "abc", "aab", "cbb" } };

    for ( int i = 0; i < 4; i++ )
    {
        for ( int j = 0; j < 10; j++ )
        {
            if ( s[i][j] )
            {
                size_t count = 0;
                for ( char *p = s[i][j]; *p != '\0'; ++p )
                {
                    if ( *p == 'a' ) ++count;
                }

                printf( "\"%s\": %zu\n", s[i][j], count );
            }
        }
    }

    printf( "\n" );

    char* t[4] = { "abc", "aab", "cbb" };

    for ( char **p = t; *p != NULL; ++p )
    {
        size_t count = 0;

        for ( char *q = *p; *q != '\0'; ++q )
        {
            if ( *q == 'a' ) ++count;
        }

        printf( "\"%s\": %zu\n", *p, count );
    }


    printf( "\n" );

    char u[4][10] = { "abc", "aab", "cbb" };

    for ( int i = 0; i < 4; i++ )
    {
        if ( u[i][0] != '\0' )
        {
            size_t count = 0;
            for ( char *p = u[i]; *p != '\0'; ++p )
            {
                if ( *p == 'a' ) ++count;
            }

            printf( "\"%s\": %zu\n", u[i], count );
        }
    }

    return 0;
}
您的意思似乎是数组声明的第二个变量或数组声明的第三个变量。第一个变量看起来很奇怪。:)

考虑到字符串文本已经包含终止零。比如说,写作是没有意义的

"abc\0"
写得简单就足够了

"abc"
由于端接零的存在,
sizeof(“abc”)
等于4

#include <stddef.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    char s[10][4] = { "abc", "aab", "cbb" };
    size_t i;
    for (i = 0; i != sizeof(s) / sizeof(s[0]); i++) {
        fprintf(stdout, "%zu: %s\n", i, s[i]);
    }
    return 0;
}
有几个错误:

  • char*
    而不是
    char
  • [4][10]
    而不是
    [10][4]
  • “abc\0”
    而不是
    “abc”
    (后面的
    “\0”
    是隐式的)

您的代码有什么问题,id没有找到
a
?而且您不需要
“\0”
它是隐含的。stackoverflow!=帮我做家务。请发布您的尝试,并描述您遇到的任何特定问题,也许有人能够帮助您。Alvaro,去掉字符串文字中的显式空值-字符串文字有隐式空值,因此“abc\0”有五个字符长。我只是想告诉您,我没有要求做家庭作业,只是解决一些我根本无法提供答案的问题?这就鼓励了这类问题。这个问题相当简单,所以我想不会有太大的伤害,虽然原则上你是对的。
#include <stddef.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    char s[10][4] = { "abc", "aab", "cbb" };
    size_t i;
    for (i = 0; i != sizeof(s) / sizeof(s[0]); i++) {
        fprintf(stdout, "%zu: %s\n", i, s[i]);
    }
    return 0;
}
#include <stddef.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    char *s[4] = { "abc", "aab", "cbb" };
    size_t i;
    for (i = 0; i != 3; i++) {
        fprintf(stdout, "%zu: %s\n", i, s[i]);
    }
    return 0;
}
char* s[4][10] = { "abc\0", "aab\0", "cbb\0" };