我打算做的是首先得到一个“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]);
}
}
答案 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';
}