###前提・実現したいこと
任意の文字列bを入力させたとき、文字列World Universityにbが丸ごと含まれるか
どうかの判定をするコードを書きたいです。
###発生している問題・エラーメッセージ
表示されるエラーの意味が分からないです。(warningとして出てくる、関数judgeの、void型にも関わらず終了させるために returnで1を返しているとことはあえてです(代替が思いつかなかったので。)) あと、引数の変数に&をつけて、対象の関数の仮引数に*をつけると値を保存できるルールを使っているのですが エラーでポインタ扱いされているのが分かりません。(ポインタは宣言しないと使えないはずでは ないのでしょうか)
###該当のソースコード
C言語
#include<stdio.h>
int count_a(char a, int *a_counter){
int i=0;
while(a[i]!='\0'){
i++;
*a_counter++;
}
return *a_counter;
}
int count_b(char b, int *b_counter){
int i=0;
while(b[i]!='\0'){
i++;
*b_counter++;
}
return *b_counter;
}
void judge(char a, char b, int a_counter, int *j){
int i, flag=1;
for(i=0; i<a_counter; i++){
if(b[0]==a[i]){
j++;
flag=flag0;
break;
}
}
if(flag==1){
printf("no equal!\n");
return 1;
}
return ;
}
void count_j(char a, char c, int j, int *l){
int i;
char c[0]=j;
for(i=j+1; i<count_a; i++){
if(a[j]==a[i]){
*l++;
c[*l]=i;
}
}
return ;
}
finalfunc(char a, char b, char c, int *k, int *l, int *flag, int *b_counter){
int i;
for(i=0; i<*b_counter; i++){
if(b[i+1]!=a[c[k]+(i+1)]){
flag=flag0;
if(k==*l){
printf("no equal!!\n");
return 1;
}
break;
}
}
return *flag;
}
int main(){
char a[20]="World University";
char b[20];
char c[20];//b[0]と一致したaの添え字がa中に幾つ含まれるか
int a_counter=0, b_counter=0;//a,bの文字数
int j=-1;//b[0]と一致した最初のaの添え字
int k;//b[0]と一致した文字のaに含まれる個数
int l=0;//cの添え字
int flag;
//bに入力してもらう
printf("input b:"); scanf("%s", b);
//関数、a,bの文字数を数える
a_counter=count_a(a, &a_counter);
b_counter=count_b(b, &b_counter);
//関数、b[0]とaのいずれかが一致するか判定する
judge(a, b, a_counter, &j, &k);
//関数、b[0]がaに何文字あるか数える、l-1文字が一致する文字数
count_j(a, c, j, &l);
/関数、b[1]以降とa[c[0]]以降が一致するか、b[1]以降とa[c[1]]以降が
一致するか、以下略/
for(k=0; k<l+1; k++){
flag=1;
finalfunc(a, b, c, &k, &l, &flag, &b_counter);
if(flag==1){
printf("equal!!\n");
return 1;
}
}
return 0;
}
###補足情報(言語/FW/ツール等のバージョンなど) atomとコマンドプロンプトです。
回答6件
あなたの回答
tips
プレビュー