プロが教える店舗&オフィスのセキュリティ対策術

以下のようなプログラムを作ったのですが、
c:\mingw\include\string.h:90:40: note: expected 'const char *' but argument is of type 'int'
90 | _CRTIMP __cdecl __MINGW_NOTHROW char *strstr (const char *, const char *) __MINGW_ATTRIB_PURE;
というエラーが出てきます。エラーの意味を教えてください。

#include <stdio.h>
#include <string.h>

int main(void)
{
FILE *fp = fopen("file.txt", "r");
if (fp == NULL) {
perror("ファイルの読み込みに失敗\n");
return 1;
}
char ch[2001];
fscanf(fp, "%2000s", ch);
fclose(fp);

printf("▼=====テキストファイルの内容=====▼\n%s\n", ch);

printf("\nパターンを入力してください。*a,t,g,cのみ\n");
char str[2001];
scanf("%2000s", str);

char *k ;


if (k != strstr(str,(int)'*') ){

int count1 = 0, count2 = -1;
for (char *p = ch; p = strstr(p, str); p++){

count1++;
count2 = ( p - ch ) / sizeof( char ) + 1;


printf("%d箇所目 %d番目から\n",count1,count2);

}

printf("パターン「\"%s\"」は計%d箇所に含まれています。", str, count1);
}
else{

int number = -1, count= 0, count3 = -1;

char* str1;
char* str2;
str1 = str;
str2 = strchr( str, '*' );
*str2 = '\0'; str2 += 2;

for (char *q = ch; q = strstr(q, str1); q++){

char *r = ch;

for (r+(q-ch); r = strstr(r, str2); r++){
count++;
count3 = ( q - ch ) / sizeof( char ) + 1;

printf("%d箇所目 %d番目から\n",count,count3);

}
}

printf("パターン「\"%s\"」は計%d箇所に含まれています。", str, count);

}

return 0;
}

質問者からの補足コメント

  • このプログラムのままですと、先のメッセージが表示され実行できません。
    どうしたら実行できるようになりますか?

      補足日時:2021/01/18 00:41

A 回答 (3件)

そこの文章の意味は


const char * を期待しているのに実引数が int だ
だけど, 「エラー」ってどこにある?
    • good
    • 0
この回答へのお礼

コンパイルしようとするとその文章が出てきて実行できないです。
たしかにエラーとは書いてないのですが、、、
どうしたらコンパイルできるようになりますかね?

お礼日時:2021/01/18 00:22

とりあえずメッセージを全部出してほしい.

    • good
    • 0
この回答へのお礼

メッセージは上ので全部です。

お礼日時:2021/01/18 11:10

if (k != strstr(str,(int)'*') ){ を


if (k != strstr(str, "*")) {
に変えてください。
    • good
    • 1
この回答へのお礼

メッセージ消えました。ありがとうございます!

お礼日時:2021/01/18 11:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!