Cでプログラムを組んでいます。
しかし、いつも変なことに悩まされてしまいます…。

『どの部分を大文字で書いて、どの部分を小文字で書くか』
書き方を統一したくて、自分なりに書き方の規則を考えてみるのですが、
いまいちどのように書くのがきれいなのか、わかりやすいのか…と
また悩んでしまいます(苦笑)

みなさんはどのようにしてプログラムを書いていますか?
定数はすべて大文字、関数は頭文字だけ大文字、など、
どんな規則の上でプログラムを書いているか、
参考にさせていただきたくて質問しました。

ちなみに、今悩んでいるのは、
「定数」「関数」「マクロ定義」「typedefした名前」
の書き方です。

しょうもない質問ですみません…(苦笑)
でも、気になってなかなかプログラムが進まないのです(苦笑)

このQ&Aに関連する最新のQ&A

A 回答 (3件)

 今は割とみんなバラバラなんですね。


 まあ、俺もヒトのことは言えませんが。

 えとですね。C言語には、#define や enum で定義したもののうち、Const 属性を持つ値はすべて大文字にする、という習慣があります。つまり、プログラム内で書き換えのできない値のことです。
 また、昔は変数は基本的に小文字にする、という習慣でしたが、現在は「特に重要な変数は、文章として読めるように単語の先頭を大文字にする」という習慣ができているようです。

 もちろんただの習慣で、C言語の規約ではありませんが。
    • good
    • 0
この回答へのお礼

プログラム内で書き換えのできない値は大文字で、という習慣から、
定数はみなさん大文字で書くのですね。

参考にさせていただきます(^-^)
どうもありがとうございました。

お礼日時:2002/02/01 18:00

こんにちは、honiyonです。



 私は基本的に単語の頭を大文字にしています。
例)
 int ItemCount
 int WHCount //Window Handle Countを略してみた

 そして型を表す記号は小文字にしています。
例)
char *pszFileName


 定数やDEFINEは全て大文字にしています。
例)
#define SYSTEM_NAME "hogehogekun"


 個人の趣味で開発している分には、自分の分かりやすい命名規約で行っても構わないと思います。

 因みに、企業の場合はその会社によって独自のルールがあり、プログラマーはその企業の決めた規約に沿ってコーディングしていきます。
 こうすれば他のプログラマーがソースをみても分かりやすい、という理由からなのですが、その規約がタコだと逆にぐちゃぐちゃなコードになって観にくい、バグ多発、という事になっちゃったりするんですよね・・・苦笑
 一度だけコーディング規約のせいで、本当は下位クラスのメソッドをoverrideされるべきなのにコーディング規約のせいで違い関数になっちゃってる上位クラスのメソッドを見た事があります(^^;

 ちょっと余談入ってしまいました。
 参考になれば幸いです(..
    • good
    • 0
この回答へのお礼

企業のように、誰かが規則を作ってしまってくれていれば
こんなことで悩まなくてもいいのに…と思う日々です(苦笑)

参考にさせていただきます(^-^)
どうもありがとうございました。

お礼日時:2002/02/01 15:44

私は個人で定義したものについては大文字を使用していますね。


#defineやtypedef等。


#define DEF_ABCD
typedef struct{
 int a;
 int b;
}TBL_ABCD, *PTBL_ABCD

関数は単語単位の先頭大文字でしょうか?

static void GetAbcdFromEfgh()
    • good
    • 0
この回答へのお礼

定数は大文字、関数の頭文字は大文字、というのはけっこう一般的なのですね。
typedefは最近使い始めたので、余計にどう書いていいのか迷ってました。

参考にさせていただきます(^-^)
どうもありがとうございました。

お礼日時:2002/02/01 15:43

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q1キーで大文字/小文字を切り替えたい

1キーで大文字/小文字を切り替えたい

現在Windows 7でMicrosoft IMEを使用しています。

ローマ字の大文字と小文字を切り替えるときにはShiftキーとCapslock/英数キーを同時に押すのが標準だと思います。

ただ仕事がら大文字/小文字の切り替えが非常に多く、2つのキーを押すのがひどく面倒に感じられ、この機能を1つのキーに割り当てられることができればどんなにいいだろうと思っています。

たとえばCapslock/英数キーを押すだけで大文字と小文字が切り替わると助かります。

そこで[Microsoft IMEのプロパティ]→[編集操作]→[キー設定]→[変更]を探るのですが、それらしき項目は見当たりません。

Microsoft IMEの設定でなんとかならないでしょうか?あるいは何らかのソフトウェアを導入して解決できないでしょうか?

よろしくお願いします。

Aベストアンサー

英語キーボードを使ってみてください。
英語キーボードですと、CapsLockはシフトを押さず
単独で動作してくれます。

質問者さんが「仮名入力」しかできないならば
英語キーボードはお薦めできませんが、
「ローマ字入力」をすることが可能ならば
英語キーボードの方が楽に打てるはずです。

英語キーボードは2000円くらいから販売されています。

Q小文字は大文字に、大文字は小文字に変換して表示するプログラム

C言語の問題で、ユーザが文字を入力し、CTRL+Zが押されるまで、半角英数字の入力を受け付ける。
受け付けた文字列(最大でも1000文字)を、小文字は大文字に、大文字は小文字に変換して表示するプログラムを作成する。数字に対しては何も変化させなくて良い。
けっこう考えたんですが全くわかりません。
どなたか知恵を貸してください。

Aベストアンサー

#include <stdio.h>
#include <ctype.h>

int main (void)
{
int c;

if((c = getchar()) == EOF) return 0;
if(isupper(c)) c = tolower(c);
else c = toupper(c);
putchar(c);
main();
return 0;
}

Qアルファベットの小文字・大文字切り替えについて

言語バーの「直接入力」にて英字を入力する際に、いつもならシフトキーを押しながら入力することで(通常が小文字なら)大文字になるのですが、いくらシフトキーを押しながら入力しても全く変わらなく(小文字のままに)なってしまいました。

パスワード等は小文字大文字を区別するので困っています。言語バーの「半角入力」でF8やF9を押すことで対応はしていますが、どこに不具合があるか、どなたか教えていただけますでしょうか。

Aベストアンサー

原因と対応を探ってみました。

1. ソフトウェアの問題

1.1. 設定変更
 あまり考えられませんが、何かの設定により Shift キーを無効にしていませんか?
 先ほど、Delete キーを無効にしてしまったという質問を見ましたので、可能性があるかもしれません。

2. ハードウェアの問題

2.1. 物理的な故障
 Shift キーを押し込めない状態になっていませんか。
(1) キーの下に異物が入っているため(大量のゴミなど)キーが十分下がらない。
(2) 飲み物をこぼしたなどの原因で、キーの軸が周囲に張り付いて動かなくなっている。

2.2. 電気的な故障
 Shift キーの接点が、接触不良を起こしている。

原因としては、これらが考えられます。

対応は、以下の方法をお試し下さい。

1.1. 設定変更
 これが原因の場合は、設定を元に戻してください。

2.1. 物理的な故障
 掃除機でゴミを吸い取るか、エアダスターでゴミを吹き飛ばしてみてください。
 次には、キートップを外して(かなり力が要ります)内部が正常に動くか確認してみてください。
 キートップを外すときは、
 キートップリムーバーという道具がありますが入手は手間がかかるので、
 ドライバーの先端を使うか(下記のページの2番目の写真を参考に)、
 http://www.infovaio.net/pcv-s/key/
 針金を輪にしたものを作り、引っ掛けて抜きます。
 (私が先日キーボードを掃除したときのやり方です。下記のページの中段の写真を参考に)
 http://park16.wakwak.com/~ex4/kb/news0202.htm
 ゴミが残っている場合は、取り除いてください。

 ここで、軸がきちんと上下するかも確認してください。

 動かない場合は(2)の問題で、洗浄処理が必要です。

2.2. 電気的な故障
 これまでの対応が当てはまらない場合は、電気的な故障と考えられます。
 この場合は、キーボードの分解・修理が必要です。

自分で直せない場合は、(ノートの場合は)修理に出す、
(デスクトップの場合は)買い替えることを検討してください。
また、Shift キーは普通は左右に一つずつあるので、片方が使えるなら多少の不便は我慢して、使い続けることもありかもしれません。

原因と対応を探ってみました。

1. ソフトウェアの問題

1.1. 設定変更
 あまり考えられませんが、何かの設定により Shift キーを無効にしていませんか?
 先ほど、Delete キーを無効にしてしまったという質問を見ましたので、可能性があるかもしれません。

2. ハードウェアの問題

2.1. 物理的な故障
 Shift キーを押し込めない状態になっていませんか。
(1) キーの下に異物が入っているため(大量のゴミなど)キーが十分下がらない。
(2) 飲み物をこぼしたなどの原因で、キーの軸が周囲に張り...続きを読む

Q大文字を小文字に、小文字を大文字にするプログラム

問題は、
ファイルにあるアルファベットの大文字を小文字に変換し、小文字は大文字に変換して、ファイルに保存するプログラムを作りなさい
というものです。
色々考えて、
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>

int main(int argc,char **argv){
int fd,flag1,flag2;
int i,n;
char buffer[512],x;
fd = open(argv[1],O_RDWR);

if(fd == -1)
perror("open");

while((n = read(fd,buffer,sizeof(buffer)))>0){
x = buffer[i];
flag1 = islower(x);
flag2 = isupper(x);

for(i=0;i<n;++i)
if(flag1 == 1){
buffer[i] = toupper(buffer[i]);
}else if(flag2 == 1){
buffer[i] = tolower(buffer[i]);
}
write(fd,buffer,n);
}
close(fd);
exit(0);
}

のようなプログラムを考えましたが、うまくいきません。
toupperのような関数を使ったのは初めてなのでよく使い方が分からずこのようなプログラムになってしまいました。
どうか正しく動くようなプログラムを教えてください。お願いします。

問題は、
ファイルにあるアルファベットの大文字を小文字に変換し、小文字は大文字に変換して、ファイルに保存するプログラムを作りなさい
というものです。
色々考えて、
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>

int main(int argc,char **argv){
int fd,flag1,flag2;
int i,n;
char buffer[512],x;
fd = open(argv[1],O_RDWR);

if(fd == -1)
perror("open");

while((n = rea...続きを読む

Aベストアンサー

flag1 = islower(x);
flag2 = isupper(x);

if(flag1 == 1){
buffer[i] = toupper(buffer[i]);
}else if(flag2 == 1){
buffer[i] = tolower(buffer[i]);
}

flagって名前のフラグ変数もどうにかして欲しいけどそれはおいといて、
isupper/islower なんかの戻り値は0/1とは限りません。


Manpage of ISALPHA
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/isspace.3.html
文字 c が調べた文字の種類に合っていれば 0 以外を返す。そうでなければ 0 を返す。

$cat mogera.c
#include <ctype.h>
#include <stdio.h>
int
main()
{
printf("isupper('A')==%d\n", isupper('A'));
printf("islower('A')==%d\n", islower('A'));
printf("isupper('z')==%d\n", isupper('z'));
printf("islower('z')==%d\n", islower('z'));

return 0;
}

isupper('A')==1
islower('A')==0
isupper('z')==0
islower('z')==2

flag1 = islower(x);
flag2 = isupper(x);

if(flag1 == 1){
buffer[i] = toupper(buffer[i]);
}else if(flag2 == 1){
buffer[i] = tolower(buffer[i]);
}

flagって名前のフラグ変数もどうにかして欲しいけどそれはおいといて、
isupper/islower なんかの戻り値は0/1とは限りません。


Manpage of ISALPHA
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/isspace.3.html
文字 c が調べた文字の種類に合っていれば 0 以外を返す。そうでなければ 0 を返す。

$cat mogera.c
#include <ct...続きを読む

Q大文字と小文字が混ざったパスワードの入力の仕方

大文字と小文字が混ざったパスワードの入力の仕方

大文字と小文字が混ざったパスワードを入力する場合。
「SHIFT」+「CAPS LOCK」ボタンを押して切り替えていますが、
●●●表示しか出ず、入力した文字が大文字か小文字の確認出来ず、
困っています。何か良い裏技が有れば教えて下さい。

使用OS:VISTA HP SP-2
使用ブラウザ:IE-8

Aベストアンサー

>「SHIFT」+「CAPS LOCK」ボタンを押して切り替えていますが、
普通の使い方は小文字モードで入力し、大文字のときだけShuftを押しながら英文字を押します。
大文字が大幅に多い場合はシフトロック(Shuft+Caps)して操作を逆転します。
IEでのパスワード入力では他のエリアへタイプしてそれをカット&ペーストする方法も有効です。
右クリックでペースト出来ない場合でもCtrl+vでペーストできると思います。

Q【VC++2005】ソースの書き方:コーディングを****.hのファイルに書いてもいいでしょうか?変数名の命名規則はありますか?

VC++2005の超超初心者です。
現在、VC++2005(Express Edition)でCLRでプロジェクトを
つくり、いろいろとコーディングしています。

今まで、参考書「作って覚えるVisual C++ 2005 Express Editon」
を利用して、半分泣きながらコーディングしていました。

その参考書では、コーディングを*****.cppでなく、
****.hのファイルにすべて書いているのですが、いいものでしょうか?
先輩が残していったVC++6.0のソースを見ると、cpp内に書いていますが
どちらがよろしいでしょうか?

また、他の参考書を見ると、変数名の先頭に「m」をつけていますが、
何か意味があるのでしょうか?
(変数名をつける時の作法ってありますか?)

せっかくなら、きれいなソースを書きたいと思うので、
詳しい方いましたら、ご教授頂きたく思います。

Aベストアンサー

幾つかの.cppで同じものを定義する必要があるもの→.hに定義を書く
1つの.cppで1回しか定義しないもの→.cppに書く

・幾つかの.cppで同じものを定義する必要があるものの例
#defineの定義
関数のプロトタイプ宣言
typedefの定義
structの定義
classの定義
など。

・1つの.cppで1回しか定義しないものの例
グローバル変数の実体の宣言
関数の実体の宣言
クラス変数の実体の宣言
構造体変数の実体の宣言
など。

例えば、t1.cpp、t2.cpp、t3.cppの3つのソースで
#define INPUT_BUF_MAX 256
の定義が欲しい場合は
-------t1.cpp-------
#define INPUT_BUF_MAX 256

-------t2.cpp-------
#define INPUT_BUF_MAX 256

-------t3.cpp-------
#define INPUT_BUF_MAX 256
と書いてはいけません。書くなら

-------t.h-------
#define INPUT_BUF_MAX 256

-------t1.cpp-------
#include "t.h"

-------t2.cpp-------
#include "t.h"

-------t3.cpp-------
#include "t.h"

と書きます。

もし「256を512にしよう」と思ったら「t.hの256を512に直して、再構築」で済みます。

もし、最初の書き方で、t3.cppだけ直し忘れると
-------t1.cpp-------
#define INPUT_BUF_MAX 512

-------t2.cpp-------
#define INPUT_BUF_MAX 512

-------t3.cpp-------
#define INPUT_BUF_MAX 256
になっていると「t3.cppだけ数字が違ったままになっていて、バグが出る」でしょう。

このように「共通の定義や宣言は、.hに書く」のです。

幾つかの.cppで同じものを定義する必要があるもの→.hに定義を書く
1つの.cppで1回しか定義しないもの→.cppに書く

・幾つかの.cppで同じものを定義する必要があるものの例
#defineの定義
関数のプロトタイプ宣言
typedefの定義
structの定義
classの定義
など。

・1つの.cppで1回しか定義しないものの例
グローバル変数の実体の宣言
関数の実体の宣言
クラス変数の実体の宣言
構造体変数の実体の宣言
など。

例えば、t1.cpp、t2.cpp、t3.cppの3つのソースで
#define INPUT_BUF_MAX 256
...続きを読む

Q大文字と小文字入力の方法を教えてください

大文字と小文字入力の方法を教えてください

ローマ字入力で、ネット上のあるサイトへパスワードを大文字小文字を混ぜて入力したいのですが、入力し始めると●がいくつかつきます。言語バーは半角英数状態であとは反応がないです。
どうしたら大文字と小文字入力の切り替えと入力ができますか?

Aベストアンサー

Caps Lock キーの状態を確認しましょう。
ランプが点灯していると大文字を入力する状態になっています。ランプが消灯していれば小文字入力状態です。

これは大文字と小文字の入力を切り替えるキーです。キーボードの一番左の縦一列の中にあります。
ほとんどのキーボードには Caps Lock が on になると該当するランプが点灯するようになっています。
スタンダードなキーボードでは、キーボード上の右上に「Number Lock」「Caps Lock」「Scroll Lock」の順でランプが並んでいますから
これらのランプの状態を確認しましょう。

さて多くのキーボードでは、Caps Lock キーを押しただけでは大文字と小文字の切替はできません。
Shift キーを押しながら Caps Lock キーを押すとこの切替ができることが多いようです。

また、Shift キーを押しながら 英数字を入力すると、大文字と小文字を一時的に切り替える事ができます。


メモ帳などで動作の確認と入力の練習をしてみてください。

Qtypedefをプログラム中で解除するには?

C言語において、
typedefした後に
そのtypedefをプログラム中で解除するにはどうしたらいいでしょうか?

typedef struct _test test

[] test ←typedef解除

Aベストアンサー

解除したい目的はなんでしょうか?
目的によっては代替手段があるかもしれません。

Q拡張子はなぜ、大文字と小文字のものがある?

WindowsXPを使っています。
拡張子を表示させる設定にすると、
大文字のものと小文字のものがあることに気がつきました。
ほとんど小文字なんですが、たとえば.WMVは大文字です。
なぜ、大文字と小文字のものがあるのでしょうか?

Aベストアンサー

マイクロソフトのMS-DOSやWindowsでは、大文字小文字の区別がありません。
大文字で表示しても、小文字で表示しても同じファイルと認識されます。

UNIXでは大文字小文字が区別され、別のファイルと認識されます。
これで、ファイル名のつけ方が大幅に増えることになります。
試しに、何倍になるか計算してみてください。

注意して欲しいのは、インターネットのサーバーではUNIXが使われていること。
Windowsの世界では、大文字小文字の区別がなく、インターネットの世界では大文字小文字の区別があることです。

windowsでは正常にリンクされていたものがサーバーにアップロードするとリンクエラーになってしまうことがよくあります。

Q大文字を小文字に変換するプログラム

if((fp4 = fopen("sample.txt","r")) == NULL){
printf("can't open\n");
return(-1);//強制終了
}

else{
while((c=fgetc(fp4))!=EOF){/*EOFまでfp4に入力*/
if(isupper(c)){
c=tolower(c);

printf("%s",c);
}
else
printf("a"); //確認用
}
}

ファイルから文字を読み込んでctype関数を使って大文字から小文字に変換したいんですがうまくいきません。

コンパイルしても確認用が反応しないんでおそらくどこか間違ってると思うんですがわかりません。

ご教授宜しくお願いします。

Aベストアンサー

>if((fp3 = fopen("sample.txt","w")) == NULL){
>if((fp4 = fopen("sample.txt","r")) == NULL){
>fclose(fp4);
>fclose(fp3);

これはちょっと怪しいですね。↓のように書き込みが終わったらすぐにクローズした方が確実です。

>if((fp3 = fopen("sample.txt","w")) == NULL){
>fclose(fp3);
>if((fp4 = fopen("sample.txt","r")) == NULL){
>fclose(fp4);


人気Q&Aランキング