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()函数。看,我试图澄清你的代码,但有一些问题导致了一些严重的猜测。电影应该是什么?Achar**
?计数是整数;为什么需要返回数组?一系列什么?您的代码似乎与您的问题毫无关联,或者根本不是一个合理的尝试。如果你真的对代码迷惑不解,至少对你的需求给出一个明确的陈述——用例子描述输入和期望的输出。还有你最好的尝试。您发布的代码只测试空格中每个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