• 締切済み

C言語

(a) キーボードから入力された文字列をそのままディスプレイに表示するプログラムを作成しなさい。 という問題 #include<stdio.h> main() { char word[1000]; /*文字型の変数の宣言*/ scanf("%s", word); /*キーボードから文字列を入力*/ printf("%s\n", word); /*入力した文字列を出力*/ } と作りましたがこれではコンソール中で文字を打ってからエンターを押さないといけないからといわれ再提出になってしまいました。 エンターを押さないでそのまま出力するということは、できるのでしょうか? あと自分の作ったプログラムではスペースや改行を使うことができないから使えるようにしろと言われてましたがそれわできますか? 変換仕様をかえればいいのですか ほかにもかえる所はありますか?

みんなの回答

回答No.7

include<stdio.h> int main() { char word[1000]; /*文字型の変数の宣言*/ scanf("%s",& word); /*キーボードから文字列を入力*/ return 0; } でどうでしょうか?

回答No.6

getche()を使ってくださいね。 #include <conio.h> getche();

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.5

・enterを押さずに入力するのは、Linuxだとcurses/ncursesライブラリを使えば出来ますが、質問者さんの力では難しいでしょう。 ・他には、system() で、stty コマンドを起動して設定変更する方法もありますが、これも難しいでしょう。 ・scanfは初心者が絶対に使ってはいけない関数です。もし、「入力にはscanfを使う」と書いてある本を読んだのならその本は捨てましょう。おそらく他にも間違いがたくさんあるはず。 とりあえずは、getchar() と putchar() を使うプログラムを書いて、「自分のわかるのはここまでです」と言って提出するのがいいと思います。

回答No.4

 処理系依存。 開発、実行環境を書くこと。

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.3

> scanfを使わないと読み込みはできないのではないのですか 標準入力から読み取るときに使えるのは scanf() だけとは限りません。

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.2

> こんな感じでしょうか? コンパイル~実行してみましたか? ちなみに、scanf()を使っている限り、 先生の要求には応えられないです。

p-__-p
質問者

補足

すいません今家でコンパイラないのでコンパイルできないです。しかも学校はLinuxで家はwindowsなので... あとscanfを使わないと読み込みはできないのではないのですか?

  • _himajin_
  • ベストアンサー率65% (128/195)
回答No.1

# 課題と言うことなので一応ヒントだけにしときます。 1文字受け取ったら1文字出力するループを作れば良いと思いますよ。

p-__-p
質問者

補足

つまり%cにしてwhileを使えばいいのでしょうか? #include<stdio.h> main() {   char word[1000]; while {    scanf("%c", word);    printf("%c\n", word); } } こんな感じでしょうか?

関連するQ&A

  • C言語、スキャン集合について

    下記のプログラムはスキャン集合を使って入力された文字列の先頭に 並んでいる数字を読み込んで捨て、その後に続く文字列を読み込んで 表示するものです。 #include <stdio.h> int main(void) { char str[80]; printf("数字に続けて文字列を入力してください\n"); scanf("%*[0-9]%s", str); printf("%s", str); return 0; } 【質問】%*[0-9] を %[^0-9] に置き換えてコンパイルして実行すると、 意味不明の文字列が出力されるのはなぜでしょうか? 置き換えても同じ結果になる気がするのですが…

  • C言語でのプログラミングについて

    キーボードから入力された文字列に含まれる各文字の個数を出力するプログラムを作成せよ。 条件 ・対象とする文字は英字の小文字のみでよい ・文字列の長さは100文字まで対応できるようにせよ 例 $ ./a.out input:aaabtzz a:3 b:1 t:1 z:2 という問がわかりません。 プログラムの例(C言語)と出来れば解説もご教授ください。 ※大学で一年c言語をやった程度なので難しいことや高度なテクニックはわかりません。多少面倒でも初歩的な知識だけで理解できるようにお願いします。 #include<stdio.h>内でできるものでお願いします。 以下、自分なりに考えたものです。 #include<stdio.h> int main(void) { char a[100]; printf("input:"); scanf("%100s",a); (ここからがわかりません) return 0; } 本当に困っています。ご教授お願いします。

  • C言語 プログラミング

    C言語、プログラミングの質問です。 構造体について、 プログラムを組んでみたのですが、上手く出力されません。実行時にはエラーはないのですが、出力時に上手くいきません。どなたかどこがおかしいかわかる方、教えていただけませんでしょうか? #include <stdio.h> struct user{ char *name; char *id; int books; }; int main (void) { struct user u; printf("氏名を入力して下さい。"); scanf("%s",u.name); printf("パスワードを入力してください。"); scanf("%s",u.id); printf("年齢を入力してください。"); scanf("%d",&u.age); printf("氏名 %s\n",u.name); printf("パスワード %s\n",u.id); printf("年齢 %d\n",u.age); return 0; } よろしくお願いします。

  • C言語のプログラミングですが、

    C言語のプログラミングですが、 255文字以内の文字列をキーボードから入力して、下記の各処理を行うプログラム(※入力した文字データは配列に入力)はどのようにしたらいいでしょうか?(入力例:acFNkeexFFg) ・入力した文字列の最後の文字を出力 ・入力した文字列⇒逆に並べ替えて出力 ・入力した文字列⇒縦に出力(1文字ずつ) ・入力した文字列の中に「F」が何個あるか ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 … char str[255]; int i,n,na,nb,nc; printf("Input Strings= "); scanf("%s",str); for(i=0;str[i]!='¥0';i++){ n=i; } printf("The last character= %c",str[n]); くらいまでしか分かりません…

  • C言語の問題で困っています。

    C言語の問題で困っています。 途中までできたのですが、この先が分かりません。 教えて頂くようお願いいたします。 【問題】 文字列の長さを求めるプログラムです。このプログラムを、入力した文字列の文字列長を求めるように変更してみましょう。  ただし、入力する文字列は半角で最大 20 文字までとし、指定された範囲外の値( 21 以上)が入力された場合は、正しい値が入力されるまで入力処理を繰り返すこと。 #include <stdio.h> int main(void) { char str[256] = "Hello"; int length, i; printf("文字列:"); scanf ("%s",str); length=0; i=0; while (str[i]!='\0') { i++; length++; } printf("\n文字列長:%d\n",length); }

  • C言語 文字列の比較 compare

    プログラミング初心者です。 60文字以内の文字列を入力して、 大小関係を比較・表示するプログラムなのですが・・ 「AはBより大きい」という結果しか出ません。 どこが間違っているのか、ご指摘お願いしますっ。 #include<stdio.h> int main(void) { char moji1[61]; char moji2[61]; printf("文字列Aを入力===>"); scanf("%60s" ,&moji1); printf("文字列Bを入力===>"); scanf("%60s" ,&moji2); if(moji1-moji2>0){ printf("===AはBより大きい===\n"); } else if(moji1-moji2<0){ printf("===AはBより小さい===\n"); } else if(moji1-moji2==0){ printf("===AとBは等しい===\n"); } return 0; } int compare(char *x, char*y) { while(*x==*y){ if(*x=='\0') return 0; x++; y++; } return (*x-*y); }

  • ポインタについて

    #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文字は入力しても 表示されなくなってしまうのでしょうか? よろしくお願いします。

  • C言語 ポインタ エラー

    文字列を入力後改行して入力した文字列を出力したいのですが、エラーがでます。 ハンドルされない例外が 0xFEFEFEFE (helloworld.exe) で発生しました: 0xC00001A5: 無効な例外ハンドラー ルーチンが検出されました。 (パラメーター: 0x00000003)。 調べてみましたが、理解できません 何卒よろしくお願いします。 #include <stdio.h> void put_string(const char *str) { while (*str) putchar(*str++); } int main(void) { char str[100]; printf("文字列を入力してください"); scanf_s("%s", str); put_string(str); putchar('\n'); return(0); }

  • プログラミングC

    以下に示すプログラムは、キーボードから39文字以下の文字列を入力した後で、その文字列を表示するプログラムである。ただし、文字列の表示においては、printf命令における変換指定で、%sを使用するのが一般的であるが、以下のプログラムあえて%sを使用せずに、%cを使っている。このプログラムについてキーボードから入力される文字列の文字数が391文字以下である限り、その文字列を正しく表示できるよう、下線部を埋めてプログラムを完成させなさい。 char x[40],i printf("39文字以下の文字列を入力:"); scanf("%s",x); for(i=0;x[i]_____;i++) printf("%c",x[i]); printf("です。\n"); [実行例] 39文字以下の文字列を入力:programming 入力された文字列はprogrammingです。

  • C言語の課題で困っています;

    C言語の課題で困ってます; 学校の課題で、キーボードから文字を入力する(最大80文字)。入力された文字列と、入力した文字列を逆順にした文字列を表示する。(malloc,freeを使って作成して下さい) ヒントで #invlude <stdio.h> void main(void){ char *buf; //入力文字列用 char *seq; //入力文字列用コピー用 char *rev; //逆順文字列用 int lec, i; buf =(char*)malloc(81); printf("文字列を入力:"); scanf("%s"buf ); for(i = 0; buf[i] ??? '\0'; i++){ } Ien = i; /* lenに文字列の長さが入る */ seq = ???(??? + 1); /* len+1文字文確保*/ for(i = 0; ???; i++){ seq[0] = buf[0]; } free(buf); rey = ???(len + 1); for(i = 0; < len; i++){ rev[len - i - 1] = seq[i]; } ren[i] ~ '\0'; printd("入力文字列 : %s\n",sep); でたんですが、全然分からなくて足りない部分の答えを教えてもらえると助かります;

専門家に質問してみよう