りーまの日記

特に外向けに配信しているわけではないので読みにくいかもしれませんが参考になれば幸いです

独C8.0(8章の理解度チェック)

独習Cの進捗状況
-------1月18日----------------------------------------

 

配列
二次元配列の入力
  int main(void) {
int i
char str[9][40];

 

for (i = 0; i < 9; i++) {
  printf("名前を入力してください %d:",i+1);
  scanf("%s", &str[i]);
}

 

  ・1次元の方だけを書けばよい



大小の比較
    if (max < num[i]) {
max = num[i];
h = i;
    }
    if (str2[i] < min) {
min = num[i];
l = i;
    }

 

  ・比較後の最大値・最小値の入れ替えを忘れない

 

switch文
  switch(i){
case 1:
   文1;
   文2;
   break;

 

case 2:
   文1;
   文2;
   break;

 

default:
   文1;
   文2;
   break;
}

 

二つの文字列の比較
  strcmp(文字列1,文字列2);
  <string.h>が必要
  一致すると0を返す

 

scanf
   %sを使うのが賢明でないのは最初のホワイトスペースで
  文字列の読み込みが止まるため

 

素数判定の関数模範例
  int prime(int i) {
int j;
for (j = 2; j <(i/2) ; j++) {
  if (!(i%j)) {
    return 0;
  }
}
return 1;
  }

独C8.5・8.6

独習Cの進捗状況
-------1月16日----------------------------------------

 

プログラムのサイズを測定する?(コンパイラでの確認?)



%[最小フィールド][.][精度]フォーマット指定子
%15.2f→少数も含めた15桁、小数部2桁で表示

 

printf
フォーマット指定子の確認
 16進数はアルファベットを含む
 アルファベット小文字出力→%x
 アルファベット大文字出力→%X

 

 %n:文字数を出力 ちょっと特殊 VSでは弾かれるので補佐関数必要

 

#include<stdlib.h>

 

 rand():乱数の生成
 (確かに乱数だが何回実行しても同じ所に同じ数?)

 

scanf
 フォーマット指定子の確認
 %sは空白までしか読み取らない
   スキャン集合%[]
   aからzを表すスキャン集合  %[a-z]
   scanf("%d_%c%d")→4_+5と入力できる
   scanf("%3d%d"i,j)→12345と入力→i=123,j=45

 

 %x→16進数
 %d→10進数
 %o→8進数

 

getchar()→<stdio.h>
 キーボードから入力された文字を1文字だけ返す
getche()→<conio.h>
 画面にエコーする
getch()→<conio.h>
 画面にエコーしない

 

printf
  %e:小文字の指数 例1.15e-9
  %E:大文字の指数 例1.15E-9

 

スキャン集合:%[ ]
 キーボードからの入力の際スキャン集合に含まれる文字を
 見つけると読み込みを始め、スキャン集合にない文字が入
 されると読み込みを終了する



printfとputs
 puts関数の方がサイズが小さく実行速度が速い

 

EOF
 入力・出力エラーが発生したときに返される値

独C8.3・8.4

独習Cの進捗状況
-------1月14日----------------------------------------
#include<conio.h>
getch→_getch
cprinf→_cprintf
kbhit→_kbhit

 

アスキーコード
A:65
a:97

 

gets():Enterを押すまでキーボードからの文字を読みとる
       そして読み取った物をstr配列に格納
       改行はヌル文字に変換される
       入力操作が成功すると先頭へのポインタを返し
       入力操作に失敗するとヌルポインタを返す



puts():strが示している文字列を画面に出力する



(文字列の出力にprintfではなくputsが使われる主な理由は
puts関数の方がサイズが小さく実行速度が速いから)
printfの完全上位互換としてputsを覚えます



gets→gets_s

 

p = gets_s(str);
printf("%s %s", p, str);
二つとも同じもの