マンガでよめる痔のこと・薬のこと

C言語まったくの初心者です。
文字の入れ替えについてなんですがよくわかりません。
キーボードから文字列を入力させてその先頭の文字と最後の文字を入れ替えるようなものを作りたいんですが。
VWXYZ → ZWXYV のような感じにしたいんです。
参考書だとよくわかりません。
わかるかたおねがいします。

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

A 回答 (5件)

Cnetuserさんへ。



fgetsを用いてファイルから文字列を読み込み、
最初と最後の文字列を入れ替えるという作業について、回答させていただきます。

前回の回答の
(1)に関して、ファイルに記述されているのは文字で、文字は1バイトのchar型データであるとします。
(2)に関して、一時保存用のchar tmpを作成します。
また、読み込み対象のファイルはCドライブにout.txtという名前で保存されている仮定し(プログラム中のC:\\out.txtに相当)、
中にはVWXYZという文字が文頭に記述されているとします。

すると以下のプログラムで目的の動作が果たせると思います。

int main( ) {
FILE *fp ;
char vc[ 6 ] ;
char tmp ;

fp = fopen( "C:\\out.txt", "r" ) ;
fgets( vc, 6, fp ) ;

tmp = vc[ 0 ] ;
vc[ 0 ] = vc[ 4 ] ;
vc[ 4 ] = tmp ;

printf( "%s", vc ) ;

return 0 ;
}

当然ですが、このプログラムも実用性や信頼性が皆無です。
問題点の発掘、改良はご自分で行っていただけると幸いです。

以上で言葉足らずですが、回答とさせていただきます。
    • good
    • 0

> printf( "必ず入力はa~zの間で5文字行ってください : " ) ;



5文字入力するのであれば、終端の'\0'を含めて、
領域は6バイト必要だと思います。
    • good
    • 1

C言語は慣れるまではなかなかソースや入門書を読んでも直感的に分かりづらいものですよね^^;


以下では配列で定義されたデータの概念は分かっていると仮定して話を進めさせていただきたいと思います。

C言語などのプログラムで数字や文字を入れ替える場合には次の二点を
守る事が基本的な考え方を身に着ける方法ではないかと思います。

(1)入れ替える対象が文字なのか数字なのかを考える
(2)入れ替え作業のためにデータの一時保存用の変数を確保する
です。

(1)に関して、今回の場合はおそらく文字で、一文字が1バイトのchar型データであると思われます。
(2)に関して、一文字がchar型のデータですから、データの一時保存用の変数をchar tmpとして作成しましょう。

そして、キーボードから入力された文字が保存される配列をchar vc[5];というデータであると仮定します。
すると,文字Vはvc[0]に、文字Zはvc[4]に保存されますから、次の3つの手順を踏んでデータの入れ替え作業を行います
(1)上で定義したtmpにvc[0]を一時保存する
(2)vc[0]にvc[4]を代入する
(3)vc[4]にtmpを代入する
以上の作業で0番目と4番目のデータの入れ替えが完了します。

もし、(2)の作業を最初にやってしまうと、vc[0]もvc[4]も同じ文字になってしまうので、入れ替える事が出来なくなりますね?
つまり、データの入れ替え作業では、入れ替えを行う前に、いったん入れ替え対象となるどちらかのデータを一時保存しておく必要があるということです。

以下には簡単に最初の文字と最後の文字を入れ替えるプログラムの例を示します。

int main( ) {
char vc[ 5 ] ;
char tmp ;

printf( "必ず入力はa~zの間で5文字行ってください : " ) ;
scanf( "%s", vc ) ;

tmp = vc[ 0 ] ; //(1)に相当
vc[ 0 ] = vc[ 4 ] ; //(2)に相当
vc[ 4 ] = tmp ; //(3)に相当

printf( "%s", vc ) ;

return 0 ;
}

ただし、上のプログラムは実用性や信頼性が皆無です。何がいけないのかは今後C言語についてたくさん勉強してご自分で考えていただけたら幸いです。

以上を言葉足らずですが回答とさせていただきます。

この回答への補足

くわしくありがとうございます。
なんとかうごかすことができました。
ずうずうしいとは思いますが。scanfを使わずfgetsでやる
方法はどうすればいいのでしょうか?よろしくおねがいします。

補足日時:2008/03/09 17:32
    • good
    • 0

1 char x;


 char y;
 の互いの内容を入れ替えるコードは書けますか?

2 同様に char str[5];
 があるとき、str[0] と str[3] を入れ替えるコードは書けますか?

3 [2]ができるなら簡単ですね、str[0]とstr[末端のインデクス]
 を入れ替えてください。
    • good
    • 0

途中まででもよいので、その機能を実現するためのコードを書かれましたか?


それとも、にっちもさっちもいかない状態ですか?
    • good
    • 1

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。

QC言語のポインターに関する警告

line[100]で
「1」が格納されていたら「a」
「2」が格納されていたら「b」
「3」が格納されていたら「c」
とout[100]に代入する関数を作りたいのですが
コンパイルすると関数の部分で
warning: assignment makes integer from pointer without a cast
という警告がでます。
ポインターは使っていないのですが、ポインターに関する警告が出ているようで困っています。
どこが悪いのかまったくわからなくて作業が完全に止まってしまいました。
解決法をおしえてください。お願いします。

/*宣言*/
int=i; /*main関数内のfor文で使用*/
char line[100], out[100];
void change(int);

/*関数*/
void change(int i)
  {
   if(line[i]=='1'){
    out[10]="a\0"
   }if(line[i]=='2'){
    out[10]="b\0";
   }if(line[i]=='3'){
    out[10]="c\0"
}
}

line[100]で
「1」が格納されていたら「a」
「2」が格納されていたら「b」
「3」が格納されていたら「c」
とout[100]に代入する関数を作りたいのですが
コンパイルすると関数の部分で
warning: assignment makes integer from pointer without a cast
という警告がでます。
ポインターは使っていないのですが、ポインターに関する警告が出ているようで困っています。
どこが悪いのかまったくわからなくて作業が完全に止まってしまいました。
解決法をおしえてください。お願いします。

/*宣言*/
int...続きを読む

Aベストアンサー

>    out[10]="a\0"
>    out[10]="b\0";
>    out[10]="c\0"

"a\0"や"b\0"や"c\0"は「charへのポインタ」ですよ。

out[10]は「char」ですから「記憶域が小さい整数(つまり、charに)に、ポインタを代入すると、値が失われるぞ」と警告が出ます。

void change(int i)
  {
   if(line[i]=='1'){
    out[10]='a';
   }if(line[i]=='2'){
    out[10]='b';
   }if(line[i]=='3'){
    out[10]='c';
}
}
または
void change(int i)
  {
   if(line[i]=='1'){
    out[10]=0x61; /* aのASCIIコード */
   }if(line[i]=='2'){
    out[10]=0x62; /* bのASCIIコード */
   }if(line[i]=='3'){
    out[10]=0x63; /* cのASCIIコード */
}
}
と書きましょう。

>    out[10]="a\0"
>    out[10]="b\0";
>    out[10]="c\0"

"a\0"や"b\0"や"c\0"は「charへのポインタ」ですよ。

out[10]は「char」ですから「記憶域が小さい整数(つまり、charに)に、ポインタを代入すると、値が失われるぞ」と警告が出ます。

void change(int i)
  {
   if(line[i]=='1'){
    out[10]='a';
   }if(line[i]=='2'){
    out[10]='b';
   }if(line[i]=='3'){
    out[10]='c';
}
}
または
void change(int i)
  {
   if(l...続きを読む

Q文字列中に含まれる文字の個数をカウントするプログラムについて…

文字列、1文字が与えられたとき、これをポインタで入力し文字列中に含まれる文字の個数を計算するプログラムを作成せよ。

と、いう課題がだされたんですけど、ユーザが任意の文字列と1文字を入力できるようにすることができません…。
多分main関数の部分をちょっといじくればよいと思うのですが…。
どなたかアドバイスをお願いします。
#include <stdio.h>

int count(const char *str, const char ch)
{
int cnt=0;
while (*str!='\0')
{
if (*str==ch)
cnt++;
str++;
}
return cnt;
}

int main()
{
const char *str="hello,world!";
const ch='o';

int cnt;

cnt=count(str, ch);

printf("%s中に%cは%d個です\n", str, ch, cnt);


return 0;
}

文字列、1文字が与えられたとき、これをポインタで入力し文字列中に含まれる文字の個数を計算するプログラムを作成せよ。

と、いう課題がだされたんですけど、ユーザが任意の文字列と1文字を入力できるようにすることができません…。
多分main関数の部分をちょっといじくればよいと思うのですが…。
どなたかアドバイスをお願いします。
#include <stdio.h>

int count(const char *str, const char ch)
{
int cnt=0;
while (*str!='\0')
{
if (*str==ch)
...続きを読む

Aベストアンサー

scanf"%s", str)は、バッファオーバーフローの危険と改行文字の食べ残し問題がありますね。
-- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< --
int main()
{
char ch;
char str[BUFSIZ];
int cnt;

printf("文字列を入力して下さい > ");
fgets(str,BUFSIZ,stdin);

printf("カウントする文字を入力してください > ");
ch = getchar();

cnt=count(str, ch);
printf("%s中に%cは%d個です\n", str, ch, cnt);

return 0;
}

QC言語 While文(ループ)内の文字入力

While文で、1文字入力をやれば思うようにうまくいかない。数字(データ)入力や、文字列入力の場合(%d 及び %s)ならうまくいく。文面で説明するより実際のプログラムを見た方が分かりやすいと思うので、以下にプログラムとその実行結果、実行結果に対する私が意図している結果とを示します。

【プログラム部分】
#include<stdio.h>

int main(void)
{
   char a;

   while(1)
   {
   printf("1文字を入力:");
   scanf("%c",&a);

   if(a == 'x')
     break;

   printf("入力したのは %c です。\n",a);
   }

   return 0;
}

【実行結果(キーボードからは「 e 」と入力」)】
1文字を入力:e
入力したのは e です。
1文字を入力:入力したのは
です。
1文字を入力:

【私が意図している結果】
1文字を入力:e
入力したのは e です。
1文字を入力:


 ちなみにC言語の環境は、インターネットで無料で入手できる試食版です。(LSI C-86 Ver3.30c 試食版)
 上記プログラムを見てもらえればお分かりだと思いますが、「xを入力するまで、永遠と1文字入力とその表示を行う」ことを意図しています。しかし実際の結果は意図に反しています。
 1回目は正常に動作しているようですが、問題は2回目以降。scnafで入力待ちをすることなく、なぜかscanfをスルーする形で3回目のscanf入力待ちとなっています。この理由を教えてください。お願いします。

While文で、1文字入力をやれば思うようにうまくいかない。数字(データ)入力や、文字列入力の場合(%d 及び %s)ならうまくいく。文面で説明するより実際のプログラムを見た方が分かりやすいと思うので、以下にプログラムとその実行結果、実行結果に対する私が意図している結果とを示します。

【プログラム部分】
#include<stdio.h>

int main(void)
{
   char a;

   while(1)
   {
   printf("1文字を入力:");
   scanf("%c",&a);

   if(a == ...続きを読む

Aベストアンサー

>1文字を入力:入力したのは
>です。

は、[Enter]キーの入力によるためです。
[Enter]キーをスルーする必要があります。

   char a;
char dummy; /*[Enter]キー用*/

   while(1)
   {
   printf("1文字を入力:");
   scanf("%c",&a);
scanf("%c",&dummy); /*[Enter]キー用*/

   if(a == 'x')
     break;

   printf("入力したのは %c です。\n",a);
   }


で、どうでしょうか?

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

文字列を逆順して出力するプログラミングがわかりません。
#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逆順すると(謎の漢字)です。

となります。

どこがおかしいんでしょうか?
よろしくおねがいします。

文字列を逆順して出力するプログラミングがわかりません。
#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);
...続きを読む

Aベストアンサー

> gyaku = moji + len - 1;

 最終的な gyaku の終端を決めるのに moji は直接関係しません。moji の長さだけです。

#include <stdio.h>
#include <string.h>

void reverse( char *moji, char *gyaku )
{
 int len;

 len = strlen( moji );

 gyaku += ( len - 1 ); // moji とは直接関係なし

 while( *moji ){

  *gyaku = *moji;

  putchar( *gyaku );

  gyaku--;
  moji++;
 }
}
void main()
{
 char x[30] = "123456789";
 char y[30] = { 0x00 }; // 初期化

 reverse( x, y );

 printf( " 逆順すると %s です。\n", y );
}
注:インデントに全角空白を用いています。タブに一括変換して下さい。

> gyaku = moji + len - 1;

 最終的な gyaku の終端を決めるのに moji は直接関係しません。moji の長さだけです。

#include <stdio.h>
#include <string.h>

void reverse( char *moji, char *gyaku )
{
 int len;

 len = strlen( moji );

 gyaku += ( len - 1 ); // moji とは直接関係なし

 while( *moji ){

  *gyaku = *moji;

  putchar( *gyaku );

  gyaku--;
  moji++;
 }
}
void main()
{
 char x[30] = "123456789";
 char y[30] = { 0x00 };...続きを読む

QC言語 名前順にソートする方法

こんにちは。

C言語で「入力された文字列から名前順にソート」する場合、どのようにすればよろしいのでしょうか?
名前順にソートする考え方、コードを教えていただけませんか?
※qsortは使わない前提です。
私の中のイメージは「文字列[5]と文字列[4]を比較して、文字列[5]の頭文字が若い場合、交換する」といった具合なのですが、うまくコードに表すことができないです...。

ご教示お願いします><

Aベストアンサー

バブルソート?

http://www1.cts.ne.jp/~clab/hsample/Sort/Sort1.html

Qscanf("%s", buf);でスペースを含んだ文字

コンソールプログラムで
scanf("%s", buf);
を使用してユーザに入力された文字によって処理を行いたいのですが、このままではスペースを含む文字列がスペースの手前で切られてしまいます。
C:\Program Filesなどを入力可能にさせたい場合にはどのようにするのがベターですか?

Aベストアンサー

お任せください!
そもそもscanfを使うというのはお勧めでは
ありません。scanfは文字+改行文字が入力
されないと完了しないためです。
が、それは良しとしましょう。
scanfの書式ですが、

int n = scanf("%[^\r\n]",buf);

という便利な書式があります。
perlでもおなじみの書式ですね。
上記の山文字"^"より前が読み込ませたい文字の集まりで、ハイフン指定が出来ます。
"^"より後ろが読込みを停止させたい文字の集まりです。上記の指定は復帰改行以外の文字が現れるまで読み込みます、という書式です。
下記のような指定も出来ます。

int n = scanf("%[a-zA-Z0-9\\: \t^\r\n]",buf);

なお、戻り値は読み込んだ項目数ですので、
if(n >= 1)
{
}
で判断できますね。

Qint型からchar型への変換

タイトル通り、int型からchar型への変換の仕方がわかりません!><
どうしたらいいのでしょうか?

Aベストアンサー

#include <stdio.h>


char buf[5];
int no;

no = 10;
sprintf(buf, "%d", no);

Q文字列の反転

こんばんわ。C言語初学者の者です。早速質問させてください。
(1)
char a;
aの中身には、アルファベット小文字の文字列が5個並んでいるとします。
その文字列を前後反転させるにはどうすればいいでしょうか?
例えばabcdeと並んでいる文字列をedcbaとする場合です。(キーボードからabcdeと打ち込んだとき、aにedcbaと格納させたいのです)


(2) char a;
  char b;
 中身は文字列で、二つを合体させたい場合どうすればいいのでしょうか?
 例えば aにはth 、bにはatと格納されている場合thatと繋げたいのです。

 よろしくお願いします。

Aベストアンサー

(1)
皆様がおっしゃっているように、char aには1文字しか入りません。
適宜修正しつつプログラムを書くとこんな感じでしょうか。

char a[128]; // 最大127文字
int i;
int length;

scanf("%s", a);
printf("input str = %s\n", a);

length = strlen(a);
for(i=0; i<length/2; i++){
// a[i] と a[length-i-1] を交換
char tmp;
tmp = a[i];
a[i] = a[length-i-1];
a[length-i-1] = tmp;
}

printf("output str = %s\n", a);

手元ではこれで
input str = abcde
output str = edcba
と出力されました。

(2)はstrcat()という関数でできます。

char a[128] = "hello";
char b[128] = " world";
strcat(a, b);
printf("%s\n", a);

これで
hello world
と出力されます。

(1)
皆様がおっしゃっているように、char aには1文字しか入りません。
適宜修正しつつプログラムを書くとこんな感じでしょうか。

char a[128]; // 最大127文字
int i;
int length;

scanf("%s", a);
printf("input str = %s\n", a);

length = strlen(a);
for(i=0; i<length/2; i++){
// a[i] と a[length-i-1] を交換
char tmp;
tmp = a[i];
a[i] = a[length-i-1];
a[length-i-1] = tmp;
}

printf("output s...続きを読む

Qバッファとは何ですか

C言語を使用してるとバッファという言葉がよく出てきますがバッファとは何ですか
メモリとは違うものですか
訳をみても緩衝材とか一時的に蓄える場所という意味でよく分かりません
一時的でない使い方も多い気がしますが実際はどういうものですか

Aベストアンサー

#1です

寝ぼけて適当に書いたので修正。

すぐ見つけることができたもので正確なものは英語版ですがこちらくらいかも。
Data buffer - Wikipedia (en.)
http://en.wikipedia.org/wiki/Data_buffer

一応簡単なものはこちらです。
バッファとは - e-Wrods
http://e-words.jp/w/E38390E38383E38395E382A1.html

「複数の機器やソフトウェアの間でデータをやり取りするときに、処理速度や転送速度の差を補うためにデータを一時的に保存しておく記憶装置や記憶領域のこと。」
が現在の基本定義です。処理速度・転送速度の差のための緩衝材的な意味です。

昔はソフトウェアとハードウェア間に使うデータでソフトウェア側がデータを受け取るか、整形して送信するときに使うメモリ領域が基本的にバッファでした。
マルチプロセッサ・マルチタスクの時代になってくると、ソフトウェア間の処理速度の違いを吸収するために使うメモリ領域にもバッファという言葉が使われるようになりました。ソフトウェア間で逐次(FIFO)処理されるデータのためのメモリ領域がこちらの使われ方の主戦場といったところでしょうか。

ソフトウェア間でただ一括転送されるデータならバッファという言葉は誤用ということになるのですが、よく誤用されます。

#1です

寝ぼけて適当に書いたので修正。

すぐ見つけることができたもので正確なものは英語版ですがこちらくらいかも。
Data buffer - Wikipedia (en.)
http://en.wikipedia.org/wiki/Data_buffer

一応簡単なものはこちらです。
バッファとは - e-Wrods
http://e-words.jp/w/E38390E38383E38395E382A1.html

「複数の機器やソフトウェアの間でデータをやり取りするときに、処理速度や転送速度の差を補うためにデータを一時的に保存しておく記憶装置や記憶領域のこと。」
が現在の基本定義です。処理速度・転送速...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング