文字列の探索
ファイル名を指定して文字列の探索を行うというプログラムをC言語で作成したのですが、 コンパイルのときに警告で「問題のあるポインタの変換(関数 main )」と出て、うまい具合に動きません。改良点を教えてください。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
unsigned char *s1;
unsigned char *s2;
unsigned char *cp;
FILE *fp;
char fname[64];
void TestStrStr(void);
main(){
s1 = calloc(256, sizeof(unsigned char));
s2 = calloc(256, sizeof(unsigned char));
printf("Input Filename...");
scanf("%s",fname);
while(1){
fp = fopen(fname, "r");
if(fp == NULL){
printf("ファイルを開くことができません...\n");
printf("Input Filename...");
scanf("%s",fname);
}else break;
}
s1=fp;
// printf("文字列1を入力してください:");
// scanf("%s",s1);
printf("文字列2を入力してください:");
scanf("%s",s2);
TestStrStr();
return 0;
}
void TestStrStr(void){
cp = strstr(s1, s2);
if(cp == NULL)
printf("'%s'に'%s'のいずれの文字も含まれない.\n", s1, s2);
else
printf("'%s'の中に現れる'%s'という文字列は%d文字目にある.\n", s1, s2, cp - s1 + 1);
free(s1);
free(s2);
}
お礼
ありがとうございます!! 助かります。