検索結果 13 件

by tomo.xxx
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:追加登...
by tomo.xxx
12年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル処理
返信数: 2
閲覧数: 1735

Re: ファイル処理

h2so5さん
返信ありがとうございます。

よく見れば単純なところを間違えていました。

ご指摘ありがとうございます^^
by tomo.xxx
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; } コンパイル、実行コ...
by tomo.xxx
12年前
フォーラム: C言語何でも質問掲示板
トピック: fgetsとstrcmp
返信数: 8
閲覧数: 3922

Re: fgetsとstrcmp

ただの屍のようださん
返信ありがとうございます。
ただの屍のようだ さんが書きました:char tantou[20];とした場合は余った分だけstdinに取り残されますが、
char *tantou;のままではCtrl+Cで強制終了しないといけないほどのエラーになります。(自分のMinGW44では)
自分はWindows7 64bitにCygwinをインストールしてgccコンパイル、実行しているのですが、やはり環境によっていろいろな操作をするということは、この書き方は不適切ということですね・・・
by tomo.xxx
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関数ではない別...
by tomo.xxx
12年前
フォーラム: C言語何でも質問掲示板
トピック: fgetsとstrcmp
返信数: 8
閲覧数: 3922

Re: fgetsとstrcmp

ポインタと配列をごちゃごちゃにしてないかが疑問に思います。 ついでに、ためしに一度21バイト以上入力してみてください ただの屍のようださん 返信ありがとうございます。 21バイト以上入力してみたのですが、コンソールには入力した文字とは違う文字が含まれた文字列が表示されました。 しかし、txtファイルの中身は19文字で改行され、自分が打ち込んだものが全て入力されている状態でした。 ↓実行結果(適当ですみません) $ ./a.exe a.txt w tantou:dsfjaohonfklsdaflwoienofnlfjd dsfjaohonfklsdaflwotantou:ienofnlfjd ...
by tomo.xxx
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について 使用しない方がよいとい...
by tomo.xxx
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の仕様の...
by tomo.xxx
12年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列とポインタ_2
返信数: 5
閲覧数: 2935

Re: 文字列とポインタ_2

返信が遅れてすみません

boxさん、nonさん、フィアさん
ありがとうございます。

やはりまだまだ勉強不足のようです・・・
試行錯誤して頑張ってみます。

本当にありがとうございました。
by tomo.xxx
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...
by tomo.xxx
12年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列とポインタ
返信数: 6
閲覧数: 3557

Re: 文字列とポインタ

頑張ってみます

ありがとうございました。
by tomo.xxx
12年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列とポインタ
返信数: 6
閲覧数: 3557

Re: 文字列とポインタ

またしても素早い回答ありがとうございます。

なるほど、勉強になります。
改めてポインタについてもう少し深く勉強してみようと思います。

回答していただきありがとうございました。
by tomo.xxx
12年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列とポインタ
返信数: 6
閲覧数: 3557

Re: 文字列とポインタ

素早い返信ありがとうございます。
おっしゃる通り、宣言のときの*と、代入の時の*で混乱しているみたいです。

今、②番のところを

コード:

if(*(str + i) == src){
      *(str + i) = &dst;
    }
このようにしたところ
警告: assignment makes integer from pointer without a cast
という警告が出たのですが、これは(str + i)が指すアドレスの中身にdstのアドレスを代入しようとするから警告が出るのでしょうか?

立て続けに申し訳ありません。

詳細検索ページへ移動する