検索結果 13 件
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: fgetsとprintf
- 返信数: 2
- 閲覧数: 1946
fgetsとprintf
この掲示板に何度かお世話になっているtomo.xxxです。 以下のようなコードと実行結果を得て、どうしてこういう実行結果になるのかが分からなかったので、質問させていただきました。 どうして、入力文字を増やすとprintfの表示部分が1度に何度も現れるのでしょうか? #include <stdio.h> int main(void) { char str[5]; while(1){ printf("1:新規登録 2:追加登録 :"); fgets(str, sizeof(str), stdin); } return 0; } 実行結果: 1:新規登録 2:追加登録 :1 1:新規登録 2:追加登...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ファイル処理
- 返信数: 2
- 閲覧数: 1735
Re: ファイル処理
h2so5さん
返信ありがとうございます。
よく見れば単純なところを間違えていました。
ご指摘ありがとうございます^^
返信ありがとうございます。
よく見れば単純なところを間違えていました。
ご指摘ありがとうございます^^
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: ファイル処理
- 返信数: 2
- 閲覧数: 1735
ファイル処理
こんばんは 夜分遅くに失礼します。 tomo.xxxです。 ファイル処理についてあれ?と思うことが出てきたので、ここに書かせていただきました。 とりあえずプログラム貼らせていただきます。 #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; fp == fopen("b.txt", "r"); if(fp == NULL){ printf("Error!!\n"); exit(EXIT_FAILURE); } printf("seizyou\n"); fclose(fp); return 0; } コンパイル、実行コ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: fgetsとstrcmp
- 返信数: 8
- 閲覧数: 3922
Re: fgetsとstrcmp
ただの屍のようださん
返信ありがとうございます。
返信ありがとうございます。
自分はWindows7 64bitにCygwinをインストールしてgccコンパイル、実行しているのですが、やはり環境によっていろいろな操作をするということは、この書き方は不適切ということですね・・・ただの屍のようだ さんが書きました:char tantou[20];とした場合は余った分だけstdinに取り残されますが、
char *tantou;のままではCtrl+Cで強制終了しないといけないほどのエラーになります。(自分のMinGW44では)
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: fgetsとstrcmp
- 返信数: 8
- 閲覧数: 3922
Re: fgetsとstrcmp
boxさん 返信ありがとうございます。 まずは、mallocか何かで、例えば20バイトの大きさの領域を確保します。 その確保が成功すれば、tantouが指している領域は間違いなく20バイトありますので、 fgets()の第2引数に20を指定できます。 ただし、今のコードのように、tantouを定義している場所(main関数)と 実際の入力箇所(input_tantou関数)が別々である場合は、 input_tantou関数の引数として20を渡す必要があると思います 少し先程のコードを省略して書いてみましたが、main関数でmallocを使って20バイトの領域を確保しても、main関数ではない別...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: fgetsとstrcmp
- 返信数: 8
- 閲覧数: 3922
Re: fgetsとstrcmp
ポインタと配列をごちゃごちゃにしてないかが疑問に思います。 ついでに、ためしに一度21バイト以上入力してみてください ただの屍のようださん 返信ありがとうございます。 21バイト以上入力してみたのですが、コンソールには入力した文字とは違う文字が含まれた文字列が表示されました。 しかし、txtファイルの中身は19文字で改行され、自分が打ち込んだものが全て入力されている状態でした。 ↓実行結果(適当ですみません) $ ./a.exe a.txt w tantou:dsfjaohonfklsdaflwoienofnlfjd dsfjaohonfklsdaflwotantou:ienofnlfjd ...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: fgetsとstrcmp
- 返信数: 8
- 閲覧数: 3922
Re: fgetsとstrcmp
boxさん 返信ありがとうございます。 ・fgetsの改行について ありがとうございます。 ・プロトタイプ宣言について プロトタイプ宣言は今回はこれでも動くのかなと思って引数を書かずに動かしてみました。 普段は書いているのですが、気を付けます。 ・fgets(fp, 20, stdin)について ここなのですが、例えばchar str[20]と宣言して、fgets(fp, sizeof(str), stdin)ならば20バイト分入力できるのは分かるのですが、ポインタで宣言した場合fgetsのサイズを指定する部分はどのように書けばよいのでしょうか? ・fflushについて 使用しない方がよいとい...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: fgetsとstrcmp
- 返信数: 8
- 閲覧数: 3922
fgetsとstrcmp
こんばんは tomo.xxxです。 コンソールに担当者名を入力してコンソールに担当者名に"end"と打ち込まれるまでテキストファイルに担当者名を書いていくというプログラムをC言語で作りました。 下のプログラムの26行目のようにif(strcmp(tantou, "end\n") == 0)と書くと、このプログラムは自分の思ったように動作する(endをコンソールに打ち込み、リターンするとプログラムが終了する)のですが、if(strcmp(tantou, "end") == 0)と書くとendとコンソールに打ち込み、リターンしてもループを回り続けるプログラムになりました。 自分はfgetsの仕様の...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 文字列とポインタ_2
- 返信数: 5
- 閲覧数: 2935
Re: 文字列とポインタ_2
返信が遅れてすみません
boxさん、nonさん、フィアさん
ありがとうございます。
やはりまだまだ勉強不足のようです・・・
試行錯誤して頑張ってみます。
本当にありがとうございました。
boxさん、nonさん、フィアさん
ありがとうございます。
やはりまだまだ勉強不足のようです・・・
試行錯誤して頑張ってみます。
本当にありがとうございました。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 文字列とポインタ_2
- 返信数: 5
- 閲覧数: 2935
文字列とポインタ_2
こんにちは 少し前から文字列とポインタがよくわからなくて復習し始めたtomo.xxxです。 また、勉強していてわからないことがあったので、どなたか教えていただけると幸いです。 #include <stdio.h> int main(void) { int i; char *str[3]; str[0] = "qwertyu"; str[1] = "asdfghj"; str[2] = "zxcvbnm"; for(i=0; i<3; i++){ printf("%s %p\n", str[i], &str[i]); } return 0; } 出力結果: qwertyu 0x28ac50 as...
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 文字列とポインタ
- 返信数: 6
- 閲覧数: 3557
Re: 文字列とポインタ
またしても素早い回答ありがとうございます。
なるほど、勉強になります。
改めてポインタについてもう少し深く勉強してみようと思います。
回答していただきありがとうございました。
なるほど、勉強になります。
改めてポインタについてもう少し深く勉強してみようと思います。
回答していただきありがとうございました。
- 12年前
- フォーラム: C言語何でも質問掲示板
- トピック: 文字列とポインタ
- 返信数: 6
- 閲覧数: 3557