我有一个分开单词的程序。就像我写“我的名字是阿里” 该程序将编写
Word one: My
Word two: name
word three: is
word four: ali
现在我想添加类似
的内容int number;
printf("which word do you want to write? number: \n");
scanf("%d",&number)
然后,如果用户写“四”,则假设写ali
或者如果他们写“两个”,则应该写name
。
int delaUppText(char input[], char* pekare[])
{
int i=0, j=0;
char prevLetter=' ';
for(i=0; input[i]!=NULL; i++)
{
if(prevLetter==' '&&input[i]!=' ')
{
pekare[j]=&input[i];
j++;
}
prevLetter=input[i];
}
for(i=0; input[i]!=NULL; i++)
{
if (input[i] == ' ')
{
input[i]=NULL;
}
}
return j;
}
int main()
{
char input[200];
char* pekare[100];
int i, antalPekare;
char answer = 32;
int nummer;
do
{
system("cls");
printf("Enter a string: ");
gets(input);
printf("\n");
antalPekare = delaUppText(input, pekare);
for(i=0;i<antalPekare;i++)
{
printf("Ord %d: %s\n", i+1, pekare[i]);
}
printf("\nWould you like to try again? [Space]/[q]");
answer = getch();
if (answer == 32)
{
system("cls");
}
else if (answer == 'q')
{
break;
}
}while (answer == 32);
return 0;
}
答案 0 :(得分:0)
不幸的是,编制者不会说英语。
因此,如果您的用户必须输入&#34;四,&#34;,那么请不要期望scanf("%d",&number)
会识别单词&#34; four&#34;。它只会识别数字,因此您的用户必须输入&#34; 4&#34;,或者您必须解析输入以了解他输入的数字。用德语输入怎么样?
答案 1 :(得分:0)
查看代码,我发现有更好的方法可以做到这一点。 其中一种方法是使用 strtok ,您可以在此处找到更多相关信息。
#include <string.h> char *strtok(char *str, const char *delim); char *strtok_r(char *str, const char *delim, char **saveptr);
http://www.tutorialspoint.com/c_standard_library/c_function_strtok.htm
或者您也可以使用 strsep
#include <string.h> char *strsep(char **stringp, const char *delim);
现在,如果你想让它与你拥有的东西一起工作。您需要使用堆内存。又名[malloc,calloc]。原因是一旦你返回主程序,程序的堆栈将会减少,并且程序中曾经存在的堆栈中的内存将不再存在。 现在如果您使用堆,那么您还应该确保只释放一次内存。
对于问题的其余部分,我将让你读到这个。
In C/C++, is char* arrayName[][] a pointer to a pointer to a pointer OR a pointer to a pointer?