我想做的是首先得到一个“protypo”字符串,然后得到一个“input”字符串,并将该输入字符串存储在一个名为storage的字符串数组中。之后,我想与strstrstr确认“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]);
    }
    }

最佳答案

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';
}

10-06 15:09