我想做的是首先得到一个“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';
}