【发布时间】:2017-05-30 13:07:20
【问题描述】:
我正在用 C 编写一个小程序,它应该计算 c 中的唯一单词。 为此,我有一个单词本来存储所有找到的单词。通常,它应该只将尚未包含在其中的单词放入其中,但它会不断输入所有已写入的单词。 我该如何解决这个问题以及如何删除我的单词本“woerterbuch”中的所有空白部分?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char lies_wort(char *Text);
char suche_wort(char *wort);
char neues_wort(char *wort);
char *woerterbuch[1000];
int main(void)
{
char Text[1000];
printf("Bitte Text eingeben : \n") ;
fgets (Text, 1000, stdin);
lies_wort(Text);
int i;
for(i=0;i<1000;i++){
printf("woerterbuch :%s\n",woerterbuch[i]);}
}
char lies_wort(char *Text){
char *wort;
int i=1;
wort = strtok(Text, " ,.!?;:");
while(wort != NULL) {
suche_wort(wort);
printf("gefunden %d: %s\n", i++, wort);
wort = strtok(NULL, " ,.!?;:");}
}
char suche_wort(char *wort)
{
int i;
for (i = 0; i>1000; i++){
if (!strcmp(woerterbuch[i],wort)){return 0;}}
neues_wort(wort);
return 0;
}
char neues_wort(char *wort)
{
int i;
for (i=0; i<1000; i++){
if(woerterbuch[i]==0){
woerterbuch[i]=wort;
return 0;}}
}
为了测试这个程序只是打印“woerterbuch”中的所有单词,所以我可以检查它是否工作。
【问题讨论】:
-
在
suche_wort中使用空指针。好吧,如果循环确实有效,您会...仔细看看那里的循环条件。 -
哪个是空指针?
-
请记住,全局变量将被“零初始化”,这意味着指针(如
woerterbuch数组中的指针)将为空。并且您使用woerterbuch中的指针在 中初始化neues_wort中的这些指针。 -
啊,谢谢我试试
-
woerterbuch[i]=wort;-->woerterbuch[i]=strdup(wort);