Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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 如何计算给定字符串中的单词总数和每个单词的字符数,并创建1D数组?_C - Fatal编程技术网

C 如何计算给定字符串中的单词总数和每个单词的字符数,并创建1D数组?

C 如何计算给定字符串中的单词总数和每个单词的字符数,并创建1D数组?,c,C,如何将字数和字符数返回到一个数组中 #define NUMBER_MOVIES 3 void getWordCount( char movies[NUMBER_MOVIES][40]); int main () { char movies[NUMBER_MOVIES][40] = {"Jurasic World", "Captain America", "I spite on your grave"}; getWordCount(movies); return

如何将字数和字符数返回到一个数组中

#define NUMBER_MOVIES 3
void getWordCount( char movies[NUMBER_MOVIES][40]);


int main ()
{

    char movies[NUMBER_MOVIES][40] = {"Jurasic World", "Captain America", "I spite on your grave"};

    getWordCount(movies);


    return 0;
}

void getWordCount(char movies[NUMBER_MOVIES][40])
{
    int i;
    int wordCount = 0;

    int wordCharCount[ ]; // need to store to this array

    for(i = 0; i < strlen(movies[i]); i++)
    {
        if (*movies[i] == ' ')
        {
            wordCount++;
            printf ("word count :%s, %d \n", movies[i], wordCount);
        }

        printf ("word count :%s, %d \n", movies[i], wordCount);
    }

}
#定义编号#3
void getWordCount(char movies[NUMBER_movies][40]);
int main()
{
char movies[NUMBER_movies][40]={“Jurasic World”,“美国队长”,“我在你的坟墓上怨恨”};
getWordCount(电影);
返回0;
}
void getWordCount(char movies[NUMBER_movies][40])
{
int i;
int字数=0;
int wordCharCount[];//需要存储到此数组
对于(i=0;i
我想将所有字数和字符数存储到同一个数组中,即wordCharCount[]


例:侏罗纪世界;数组应为[2 8 5]。所以2个单词和第一个单词包含8个字符,第二个单词包含5个字符。此外,阵列应该可以从函数外部访问

最明显的问题是你的单词计数只有一个循环,但是你需要扫描每部电影中的每个角色——这意味着有两个嵌套循环

那么,在一个数组中返回两种类型的信息的想法是不明智的——结构更合适。然后,在C语言中,不能通过值传递或返回数组,因此调用方通常通过引用传递数组,以便函数放置结果

考虑:

#include <stdio.h>
#include <string.h>

struct sMovie
{
    char title[40] ;
    int title_stats[40] ;
} ;

void getWordCount( struct sMovie* movies, int number_of_movies );

int main ()
{
    struct sMovie movies[] = { {"Jurassic World"}, 
                               {"Captain America"}, 
                               {"I spit on your grave"} } ;

    const int number_of_movies = sizeof(movies) / sizeof(*movies) ;
    getWordCount( movies, number_of_movies ) ;

    for( int m = 0; m < number_of_movies; m++ )
    {
        printf( "\"%s\" has %d words of lengths",
        movies[m].title,
        movies[m].title_stats[0] ) ;
        for( int w = 1; w <= movies[m].title_stats[0]; w++ )
        {
            printf( " %d", movies[m].title_stats[w] ) ;
        }
        printf( "\n" ) ;
    }

    return 0;
}

void getWordCount( struct sMovie* movies, int number_of_movies )
{
    // For each movie...
    for( int m = 0; m < number_of_movies; m++)
    {
        memset( movies[m].title_stats, 0, sizeof(movies[m].title_stats) ) ;
        movies[m].title_stats[0] = 1 ;

        // For each character
        for( int i = 0; movies[m].title[i] != 0; i++ )
        {
            int word = movies[m].title_stats[0] ; 
            movies[m].title_stats[word]++ ;

            if( movies[m].title[i] == ' ' )
            {
                movies[m].title_stats[word]-- ;
                movies[m].title_stats[0]++ ;
            }
        }
    }
}

代码中没有要返回的数组。而且它不能正常工作
movie name
返回1,而
movie name
返回3“返回…到一个数组”和“返回到一个数组”是什么意思?请包括编译和运行的代码,包括main()函数。看,我试图澄清你的代码,但有一些问题导致了一些严重的猜测。电影应该是什么?A
char**
?计数是整数;为什么需要返回数组?一系列什么?您的代码似乎与您的问题毫无关联,或者根本不是一个合理的尝试。如果你真的对代码迷惑不解,至少对你的需求给出一个明确的陈述——用例子描述输入和期望的输出。还有你最好的尝试。您发布的代码只测试空格中每个
movieNames
字符串的第一个字符-似乎不太可能,这只会计算以空格开头的电影数量。非常感谢。但是我如何在不改变主数组[char-movie]的情况下做同样的事情呢。我只想在函数中执行所有操作,并将所有结果存储到1D数组(int数组)中。例:[3 4]第一个元素是字数。2,3,4元素是给定字符串中每个单词的计数。在单词计数函数中使用数组没有任何作用-所以你已经计算了单词,然后呢?存储它们的目的完全是为了以后处理它们。我说“考虑”是因为我既不打算用勺子喂你,也不鼓励你做糟糕的设计。您的想法是有缺陷的,因为字数是可变的,数组是固定的,但您需要每个单词的长度。无论哪种方式,你的评论都以你的问题所没有的方式澄清了你的要求——你应该编辑这个问题;数组应为[2 8 5]。所以两个单词和第一个单词包含8个字符,第二个单词包含5个字符。正如我所说的,这很清楚-但为什么你在问题中不能那么清楚?我只能回答问题,不能回答评论。此外,这个答案中可能有足够的内容让你自己去理解。如果你被卡住了,最好发一个新问题。非常感谢。我是新来的。我感谢你在这个问题上的帮助和编辑。当我发布下一个问题时,我会更加小心。
"Jurassic World" has 2 words of lengths 8 5                                                                                                              
"Captain America" has 2 words of lengths 7 7                                                                                                             
"I spit on your grave" has 5 words of lengths 1 4 2 4 5