• ベストアンサー

文字列の読み込みに関して

kent_aの回答

  • kent_a
  • ベストアンサー率18% (36/199)
回答No.2

scanf("%s",&ch); ここが違う scanf("%s",ch); または scanf("%s",&ch[0]);

rinnshan
質問者

お礼

回答ありがとうございました。 そうですね。そこが違っていますね^^

関連するQ&A

  • 文字列を表すための配列とポインタ

    文字列を表すための配列とポインタ  配列とポインタは同様に扱えるもの、と思って、次のプログラムを作りました。処理系は、Visual Studio 2010 コマンドプロンプトです。 #include <stdio.h> void main(void) { char a[256]; char *b; printf("文字列を入力してください。\n"); printf("例「abcde」\n\n"); printf("配列型文字列を使います。\n"); scanf("%s", a); printf("文字列は%sです。\n\n", a); printf("ポインタ型文字列を使います。\n"); scanf("%s", b); printf("文字列は%sです。\n", b); }  すると、まずコンパイル時に、 「warning C4700: 初期化されていないローカル変数'b'が使用されます」 と表示されました。そして、実行すると、「配列型文字列」の方は問題ないのですが、「ポインタ型文字列」の方の実行後に、 「x.exeは動作を停止しました。 問題が発生したため、プログラムが正しく動作しなくなりま した。プログラムは閉じられ、解決策がある場合は Windowsから通知されます。」 と表示され、エラーとして終了してしまいます。 「char *b;」 と宣言するところが問題のようですが、なぜなのかが分かりません。どなたか、解説をお願いします。

  • 文字列の探索

    ファイル名を指定して文字列の探索を行うというプログラムを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); }

  • c言語のポインタへの文字列入力についてです。

    当方c言語初学者なのですがscanfを使ってポインタに文字列を入力したいのですがバグが発生して進みません・・・どういうことなのでしょうか? #include <stdio.h> int main(void) { char *a; scanf("%s", a); printf("%s", a); return (0); } *aをa[128]; のように配列に変えるとうまくいくことはなんとかわかるのですが・・・助けてください(^_^;)

  • ポインタと文字列(C言語)

    サンプルソース char *myfgets(char *s, int n, FILE *in){-----(1) int ch; while((ch = fgetc(in)) != '\n'){ if(ch == EOF) return NULL; *s++ = ch; if(*s == (n - 1))------(2) return NULL; } *s++ = '\n'; *s = '\0'; return s; } 自分でfgets関数を作ろうという課題なのですがポインタがいまいちつかめません。 (1)のchar *myfgetsの部分の関数のポインタというのは要するにどういうことに使うのでしょうか? (2)の場合の*sは配列の要素数を表しているのでしょうか?

  • 文字列を入力・表示

    文字列を入力して表示したいのですができません。誤っていないと思うのですが・・・。何が間違っているのでしょうか? #include<stdio.h> void main (void) { char namae; printf("お名前を登録します。お名前を入力して下さい。\n"); scanf("%s",&namae); printf("お名前は%sですね。\n",namae); }

  • 文字を反転させる。

    以下の手順に従ってプログラムを作成せよ.適宜printf を利用して,入力支援(「文字列を入 力して下さい」などの画面表示)を行うこと. (1) キーボードから文字列を入力し,文字配列s[64] に格納する. (2) 文字配列s[64] に格納されている文字列を逆順にしてt[64] に格納する(配列全部を逆 順にするのではなく,NULL 文字までの要素を逆順にする). (3) t[64] を画面表示する. ポインタ使用不可、ヘッダファイル<stdio.h>だけ 入力された文字を反転させるということでしょうか?? #include <stdio.h> int main(void){ int i; char s[256]; char t[256]; printf("文字列を入力:"); scanf("%s" , s); for ( i = 0; i < '\n'; i++ ){ t[i] = s[i]; } printf("文字列の逆順は%s",t); getchar(); getchar(); return(0); } これだとただ入力された文字を出力するだけになってしまいますよね・・・・。どうすればいいのでしょうか?

  • 文字列の読み込みについて教えてください!

    c言語の文字列で キーボードで名前を入力して名前が"oh"なら"世界の王"、"nagashima"なら"ミスター長嶋"と表示し、 それ以外の名前なら"さん"をつけて表示するプログラムを作成するんですが… #include <stdio.h> int main(void) { char name[20]; printf("お名前は?\n"); scanf("%s", name); printf('%sさん\n', name): return (0); } で お名前は? name nameさん とは出来るんですが、"世界の王"、"ミスター長嶋"の表示方法がわかりません。 出来ればソース書いてくれるとありがたいんですが、 ヒントだけでもお願いします! if else とか使うと思うんですが、うまくいきません。

  • 文字列をa→1b→2...z→26に変換する

    文字列を上記のように変換して表示するプログラムについて #include<stdio.h> int main() {    char ch[10];    printf("小文字のアルファベットの文字列を入力\n");    scanf("%s",&ch);    int i=0,j=97;    while(ch[i]!='\0'){      for(j; j<=97+26; j++){        if(ch[i]==j){          ch[i]=j-96;          printf("%d\n",ch[i]);        }      }    i++;    }    return 0; } 一文字の場合は問題ないのですが複数になるとうまくいきません 実行例 a 1 hello 8 となってしまいます。 改善をお願いします。

  • ポインタについて

    #include<stdio.h> int main(void) { char str[10]; char *ptr = str; printf("文字列を入力してください。\n"); scanf("%s",ptr); printf("文字列は%sです。",str); return 0; } 上記のプログラムのscanf("%s",ptr);の ptrに&をつけるとなぜ先頭の4文字は入力しても 表示されなくなってしまうのでしょうか? よろしくお願いします。

  • 文字列

    下のプログラムは何をするためのプログラムなのか教えてください。 個人的にはJISコードに関係していると思うのですがさっぱりわかりません。 どなたか詳しい説明お願いします。 #include <stdio.h> #define LEN 255 int main(void) { char str[LEN]; char cipher[LEN]; int ikey; int i,n; printf("文字列を入力せよ : "); scanf("%s", str); printf("鍵を入力 : "); scanf("%d", &ikey); i = 0; while (str[i]!='\0') { n = (str[i]-'A'+ikey)%26; cipher[i] = 'A'+n; ++i; } cipher[i] = '\0'; printf("%s\n", cipher); return 0; }