不能用strstr吗?

时间:2013-11-15 22:15:01

标签: c arrays string strstr

我打算做的是首先得到一个“protypo”字符串。然后得到一个“输入”字符串并将该输入字符串存储在一个名为storage的字符串数组中。之后我想用strstr检查“protypo” “出现在存储中,如果它打印出来的那条线。我不明白我做错了什么,如果可能我想要一只手。 谢谢。

    int main()
    {
    int i,j,z;
    char x;
    char *pointstr;
    char protypo[101]={0};
    char input[101]={0};
    char storage[20][101]={{0}};       // An array of strings.


    printf("Give Protypo: \n");
    fgets(protypo,101,stdin);
    for (i=0;i<101;i++)
    {
            if (protypo[i]=='\n')
                    protypo[i]='\0';
            break;
    }
    printf("Give input: \n");

    for (i=0;i<5;i++)
    {
            fgets(input,101,stdin);
            strcpy(storage[i],input);       //Ta  string mou mesa se ena pinaka.

    }
    for (i=0;i<5;i++)
    {
            pointstr=strstr(storage[i],protypo);
            if (pointstr!=NULL)
            printf("Line protypo is appearing:\n %s",storage[i]);
    }
    }

1 个答案:

答案 0 :(得分:1)

for (i=0;i<101;i++) {
    if (protypo[i]=='\n')
        protypo[i]='\0';
    break;
}

看起来不太对劲。它检查protypo[0]是否不是换行符然后退出循环。

我想你想用nul替换第一个换行符。你会这样做

for (i=0;i<101;i++) {
    if (protypo[i]=='\n') {
        protypo[i]='\0';
        break;
    }
}

或者,更简洁,

char* c = strchr(protypo, '\n');
if (c != NULL) {
    *c = '\0';
}