【发布时间】:2010-11-29 03:12:49
【问题描述】:
我是 C 新手,我正在尝试从标准输入扫描一行并从中提取第 n 个单词。 现在我已经对其进行了硬编码,您可以在其中存储句子中的第一个、第二个或第三个条目,这就是它的样子:
int set_to_nth_word(char* word, char* input, int n)
{
char word1[20];
char word2[20];
char word3[20];
if(sscanf(input, "%s %s %s", word1, word2, word3) < n)
{
printf("You didn't enter enough values\n");
return 0;
}
else
{
if(n == 1) strcpy(word, word1);
else if(n == 2) strcpy(word, word2);
else if(n == 3) strcpy(word, word3);
return 1;
}
}
调用这个方法的代码是:
char *input = (char *) malloc (1);
if(getline(&input, (size_t)0, stdin) != -1)
{
char word[20];
if(set_to_nth_word(word, input, 1))
{
printf("Success");
}
}
除了找到解决此问题的方法外,如果有人指出任何不良风格或不良编码实践,我会很高兴!
【问题讨论】:
-
请注意,这里的 getline() 是一个 GNU 函数,并不适用于所有 POSIX 平台。 (例如,Mac OS X 没有它。)