[1.1] 自分が今行いたい事は何か
fgetsとsscanfを用いて、標準入力から2行の文字列を比較して一行目の文字が2行目に含まれているかどうかのプログラムを作成したいです。
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
#include <stdio.h>
#include<string.h>
int main(void){
char buf[1000];
char str[1000];
char abc[1000];
fgets(str, sizeof(str), stdin);
sscanf(str,"%s",buf);
fgets(abc, sizeof(abc), stdin);
sscanf(abc,"%s",buf);
char xyz;
xyz=strstr(abc,str);
if(xyz!=NULL){
printf("NG\n");
}
else{
printf("%s",abc);
}
}
実行時に一行目の文字列が2行目に含まれているのに、実行結果が2行目のみ表示されてしまいます。
例 標準入力から二行を入力
efg
abcefghi
実行結果
abcefghi
二行目にefgが含まれているのに、strstr()文の検索が上手く機能しないことに躓いております。
[1.4] 今何がわからないのか、知りたいのか
一行目の文字列が含まれているのかを検索するためにstrstr()文で最適なのか、
もしstrstr()文が使い方が間違っているなら正しい使い方を知りたいです。
もし他に最適な関数があれば、その情報も知りたいです。
[2] 環境
[2.1] OS : Windows
[3] その他
・どの程度C言語を理解しているか
C言語は2020年10月末から学習を始めており、まだ理解を出来てない部分が多いです。
お手数をおかけしますが、よろしくお願いします。