- 締切済み
セグメントエラー
#include <stdio.h> int find(char a[],int c) { int k,s,count; s = 0; k = 0; count = 0; while( a[k]!= 0 && a[k] != c) { s = a[k]; count = count + 1; k++; } if(a[k] = 0) return(-1); else return(count); } int main(void) { int d; d = 0; d = find("aaaas",'s'); printf("%d",d); return(0); } 文字列を検索するやつなんだけど セグメントエラーが出るんだけど どこが間違ってるか教えてください!
- asadasaba
- お礼率100% (2/2)
- C・C++・C#
- 回答数2
- ありがとう数4
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2126/6286)
もっと簡単に書けます。 #include <stdio.h> int find(char a[],int c) { int k; for (k = 0; a[k] != '\0' && a[k] != c; k++) ; return (a[k] != '\0') ? k : -1; } int main(void) { printf("%d\n", find("aaaas", 's')); return 0; }
- SilverThaw
- ベストアンサー率32% (260/806)
>どこが間違ってるか教えてください! ここ >if(a[k] = 0)
お礼
上記はこっちでやるべきでしたね^^; 申し訳ないです よろしければもう少し詳しく教えてください よろしくお願いします
補足
回答ありがとうございますmom すいません・・・ 如何違うのか詳しく教えてくれませんか^^;
関連するQ&A
- 配列について
初歩的な質問ですいませんが、質問よろしくお願いします。 ◎1----------------------------- #include<stdio.h> int main(void) { char ss[10]="AB"; printf("ss=%s\n",ss); return 0; } ------------------------------------ ◎2-------------------------------- #include<stdio.h> int main(void) { char ss[10]; ss[0]='A'; ss[1]='B'; ss[2]=0; printf("ss=%s\n",ss); return 0; } ----------------------------------- ◎3------------------------------- #include<stdio.h> #include<string.h> int main(void) { char ss[10]; strcpy(ss,"AB"); printf("ss=%s\n",ss); return 0; } ----------------------------------- ◎4------------------------------- #include<stdio.h> int main(void) { char ss[10]; ss="AB"; printf("ss=%s\n",ss); return 0; } ---------------------------------- 以上4つのプログラムで、◎2と◎3は正常に動くと理解できたのですが、何故、◎1は正常に動き、◎4は「'const char [3]' から 'char [10]' に変換できません。」といったようなエラーが出てしまうか分かりません。 教えていただければ嬉しいです。
- ベストアンサー
- C・C++・C#
- C言語の初心者です。これを実行してみてください。
「a」って打ち込んだら「a」ってでましたか? #include<stdio.h> int main(void){ char a; printf("aaa\n"); scanf_s("%c", &a); printf("%c", a); return 0; }
- ベストアンサー
- C・C++・C#
- このプログラムの復元処理教えでください。助けてくだ
#include <stdio.h> int main(void) { char a[51]; char b[101]; char c[51]; int i,k; int cnt; printf("文字例-->"); scanf("%s",a); i = 0; k = 0; while(a[i] !='\0') { cnt = 0; b[k] = a[i]; while(b[k] = a[i]) { cnt++; i++; } k++; b[k] = cnt + 48; k++; } b[k]='\0'; printf("b=%s\n",b); printf("c=%s\n",c); //-------------------------------------------------- getchar(); return 0; }
- 締切済み
- 専門学校
- ASCIIコード入力
プログラムを作っていてどうしてもわからなくなりまして… #include <stdio.h> int main(void) { char c; c=38; printf("%c\n",c); return 0; } この場合は&が出てくるからいいんですけど… #include <stdio.h> int main(void) { char c; scanf("%c",&c); printf("%c\n",c); return 0; } この場合は97をscanすると9が出てきます。ASCIIコード入力でaを表示させたいんですが、何が間違っているのでしょうか? 初心者なもので…お願いしますm(__)m
- ベストアンサー
- C・C++・C#
- sscanf エラー
sscanfで整数が読み込めません。 コマンドプロンプトの画面は以下のようです。 文章を入力してください。 aaaa 11 14 aaaa 4201776 4201870 1 以下が実行したコードです。 #include<stdio.h> int main(void){ int a,b,c,i; char name[20]; printf("文章を入力してください。\n"); scanf("%s",x); c=sscanf(x,"%s %d %d",name,&a,&b); printf("%s %d %d %d\n",name,a,b,c); return(0);} aaaa 11 14と表示されるように、御指摘おねがいします。
- 締切済み
- 情報工学
- プログラミング 関数
教えてください。 入力された文字列のうち、文字aの数を数える関数count_aを作成する。 以下は関数count_aを利用したmainのプログラムの例です。 #include <stdio.h> int count_a(char str[]); int main ( void ) { char str[255]="abcaeag"; printf("%d\n",count_a(str)); return 0; }
- 締切済み
- C・C++・C#
- C言語 ソートについて
#include <stdbool.h> #include <stdio.h> void swap(char *a, char *b) { } bool is_at(char c) { } void justify(char line[], int n) { } int main(void) { char line[] = "a@b@@@c@@d@@@ef@@g"; size_t n = sizeof(line) - 1; justify(line, n); printf("%s\n", line); return 0; } 上の雛形を使って文字列lineに含まれる@以外の文字を文字列の前の方に詰めていくプログラミングを作るという問題を解いていたのですが下のプログラミングまでは出来たのですが最後のjustifyの部分がわかりません 良ければ解答をお願いします #include <stdbool.h> #include <stdio.h> void swap(char *a, char *b) { char temp = *a; *a = *b; *b = temp; } bool is_at(char c) { if(c == '@') { return true; } else { return false; } } void justify(char line[], int n) { for(int i=0;i<n-1;i++) { } } int main(void) { char line[] = "a@b@@@c@@d@@@ef@@g"; size_t n = sizeof(line) - 1; justify(line, n); printf("%s\n", line); return 0; }
- ベストアンサー
- C・C++・C#
- C言語 文字列の操作
文字Cが含まれる個数を求めたいです #include <stdio.h> int str_chnum(const char str[],int c) { int i; int count=0; for(i=0;str[i]!="\0";i++) if (str[i]==c) count++; return(count); } int main(void) { char st[100]; printf("検索文字列を入力してください:"); scanf("%s",st) ; printf("検索文字列数は%uです。\n",st,int str_chnum(const str[],int c)); return(0); } コンパイルできません。なぜですか?printfの行がたぶん間違っていると思うんですが。。。
- 締切済み
- C・C++・C#
- エラーの原因が分かりません。
Cをはじめたのですが、次で、 実行時にエラーとなってしまいます。 (「問題が発生したため・・」とでます)。 コンパイルは出来るのですが、 どこが悪いのでしょうか。 #include <stdio.h> char sendstr(); int main(){ char myc=sendstr(); printf("%s",myc); printf("HELLO"); return 0; } char sendstr(){ char mychar='s'; return mychar; }
- ベストアンサー
- C・C++・C#
- C言語エラー
C言語をいじっているのですが、16行目と19行目の「型」の前に「;」がありませんと表示されます。 どこをどう改善すればいいか教えてもらえないでしょうか /*遊び半分*/ #include <stdio.h> #include <process.h> int main() { char dear; printf("ああああ\n"); printf("ああああ \n"); scanf_s("%c", &dear); switch (dear){ case 'A04': ; int main(void); { printf("ああああ\n"); int main(void); printf("あああ\n"); printf("あああ\n"); break; system("pause"); return 0; } case 'C34' : printf("\n"); break; case 'E24' : printf("\n"); break; case 'F38' : printf("\n"); break; default: printf("メッセージはありません\n"); break;} return 0;
- 締切済み
- C・C++・C#
お礼
なるほど・・・こんな風にも書けるんですね 参考にします。 ところで間違いの箇所ですが =が一個足らなかったようで・・・ エラーが判明したので回答は打ち切ることにしました 回答してくださった方はありがとうございました。