• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列中の空白部の読み込みの方法を教えてくださいm(_ _)m)

文字列中の空白部を読み込む方法とプログラムの問題

dtyuの回答

  • ベストアンサー
  • dtyu
  • ベストアンサー率33% (1/3)
回答No.1

scanf()した後のsやmの値を表示してみればいいんじゃないですか。

you-two
質問者

お礼

ありがとうございます。 自分の考えていたエラーがそもそもおかしかったことに気づけました。

関連するQ&A

  • 文字列

    C言語の勉強をしてて、文字列を反転させる以下のようなプログラムを書いてみました。 #include <stdio.h> #include <string.h> void str_reverse(char s[]) { int i,l=strlen(s); char *r; for(i=0;i<l;i++){ r[i]=s[l-i-1]; } for(i=0;i<l;i++) s[i]=r[i]; return; } int main() { char s[100]; scanf("%s",&s); str_reverse(s); printf("%s",s); return 0; } 実行してみると基本的にうまくいくのですが、文字を10文字入力した時だけ 「問題が発生したため、○○.exeを終了します。…」 というエラーウィンドウが出てきてしまいます。 どなか原因と解決法を教えてください。

  • どこがちがうのでしょうか?

    以下の二つのプログラムはユーザーが文字を入力し、80文字以下なら ピリオドを追加して表示するというものです。上はうまくいきますが、下はうまくいきません。なぜでしょうか? #include<string.h> #include<stdlib.h> int main() { char str[80]; int i; printf("文字列を入力してください。\n"); gets(str); if(strlen(str)<80) { for(i=strlen(str);i<79;i++) strcat(str,"."); } printf("%s",str); } #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char str[80]; int i; printf("文字列を入力してください。\n"); gets(str); if(strlen(str)<80) { for(i=strlen(str)+1;i<79;i++) str[i] = "."; } printf("%s",str); }

  • 文字の並べ替えについて質問

    以下のような標準入力したアルファベットの文字列(jgoaihoghohgo...みたいな)を昇順に並べ替えるプログラムを作成して思ったのですが、各文字の比較ってやっぱりアスキーコードの数字を比較しているのでしょうか? だとするとif(s[i]<s[j])の部分で少し疑問を感じました。 if(s[i]>s[j])ではないのでしょうか?こうでないとs[i]にaがs[j]にbが格納されているときに並べ替えが起きてしまうような気がするのです。 基本的なことのようですがお願いしますm(__)m あとプログラムに関して不備を感じましたら訂正のアドバイスをお願いします。 #include<stdio.h> #include<string.h> int main(void){ char s[BUFSIZ]; char s2[BUFSIZ]; int i,j,m; printf("input sentense.\n"); scanf("%s",s); m=strlen(s); for(i=0;i<m;i++){ for(j=0;j<m;j++){ if(s[i]<s[j]){ s2[10]=s[i]; s[i]=s[j]; s[j]=s2[10]; } } } printf("%s",s); return(0); }

  • Cの文字列関連の質問です。よろしくお願いします。

    Cの文字列関連の質問です。よろしくお願いします。 『読み込んだ文字列がナル文字を含めて15文字以下であれば、その文字列をそのまま格納し、そうでない場合、読み込んだ文字列の先頭14文字とナル文字を格納する』 という条件を満たすプログラムを作成しました。 #include <stdlib.h> #include <string.h> #include <stdio.h> int main(void) { int num; char (*p)[15]; printf("文字列の個数: "); scanf("%d", &num); p = (char (*)[15])malloc(num * 15); if (p == NULL) puts("記憶域の確保に失敗"); else { int i; char tmp[100]; /* 書込み */ for (i = 0; i < num; i++) { printf("p[%d]: ", i); scanf("%s", tmp); sprintf(p[i], "%.14s", tmp); } /* 表示 */ for (i = 0; i < num; i++) printf("p[%d]: %s\n", i, p[i]); free(p); } return 0; } この場合は、ちゃんと条件を満たした結果が出ました。 ここで24行目の『sprintf(p[i], "%.14s", tmp);』を『strncpy(p[i], tmp, 14);』に変更する明らかに結果がおかしくなります。 strncpyを使った方法に変更する場合、どのように修正を行えばいいのでしょうか? 長々と書いてしまいましたが、よろしくお願い致します。

  • 文字列

    下のプログラムは何をするためのプログラムなのか教えてください。 個人的には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; }

  • VC++ 再帰関数

    ■キーボードより読み込んだ文字列の長さを求めるプログラムを再帰関数を使って作る #include <stdlib.h> int unk_r(char*p)   {    if(*p == 0x00)    return(0);   else    return(1+unk_r(p+1));   } int main()   {    char *i;    i = (char *)malloc(20);    scanf("%s",i);    printf("%d\n",unk_r(i));   } このプログラムについて、行、単語ひとつひとつ細かいところまで具体的に解説お願いします。どういう働きをしているのか等。 例えば #include <stdlib.h> はmallocを使うのに必要などなど。 よろしくお願いします。

  • c言語の文字列の逆順のプログラムがわかりません

    文字列を逆順して出力するプログラミングがわかりません。 #include <stdio.h> #include <string.h> void reverse(char *moji, char *gyaku); int main(void) { char x[30]; char y[30]; puts("文字を入力してください。\n"); scanf("%s", x); reverse(x, y); printf("逆順すると%sです。\n", y); return (0); } void reverse(char *moji, char *gyaku) { int i, len; len = strlen(moji); gyaku = moji + len - 1; for(i = 0; i < len; i ++){ putchar((int)*gyaku); gyaku--; } } 理想とする実行結果は 文字を入力してください。 abcdefg 逆順するとgfedcbaです。 なんですが、 上記のソースを実行すると 文字を入力してください。 abcdefg gfedcba逆順すると(謎の漢字)です。 となります。 どこがおかしいんでしょうか? よろしくおねがいします。

  • 空白を含んだ文字列がうまく格納(表示)できない

    こんにちわ。 空白(スペース)の入った文字列の格納(表示)について質問させてください。 以下のプログラムを実行すると、空白の含む文字列がうまく表示されません。 例えば、 in the worldと入力しても、inしか格納されていないみたいです。それはなぜでしょうか? また、どうすればそれを格納、表示させることができるのでしょうか?教えてください。よろしくお願いいたします。 #include <stdio.h> #include <string.h> main() { char buf[BUFSIZ]; char moji[31]; int i; printf("Input string: "); fgets(buf, sizeof(buf), stdin); moji[31] = '?0'; sscanf(buf, "%s", moji); i = 0; while (moji[i] != '?0') { printf("%c",moji[i]); i = i + 1; } printf("?n"); printf("%d letters?n", i); } 【実行例】 csx01:~> gcc prog.c csx01:~> a.out Input string: in the world in 2 letters

  • 文字列を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 となってしまいます。 改善をお願いします。

  • 文字列の扱い方

    初歩的な質問ですみません… str文字列からcという文字を見つけたら添字を返すという関数を作ったのですが、 iにこの関数を代入して、if文の制御式にiを使って比較するまでは正常なのですが、 真文にiを使うと何故か偽文(という言い方でいいのでしょうか…この場合("そんな値はありません。"というところです)が実行されてしまいます。 よろしければご教授お願い致します。 #include <stdio.h> int str_char(const char str[],int c) { int len = strlen(str); int i; for (i = 0;i < len;i++) { if (str[i] == c) return i; } return -1; } int main() { char str[64] = "Fucking Brutal Death Metal"; int ch,i; printf("どの文字を調べますか?"); scanf("%c",&ch); i = str_char(str,ch); if (i >= 0) printf("その文字は%d番目にあります。",str_char(str,ch) + 1); //何故かiだと動かない else printf("そんな値はありません。"); return 0; }