C言語

(c言語)日本語の%cによる表記

macで日本語を%cを使って躓いたことの備忘録です。。 日本語は英語とは異なり、マルチバイトを要求します。 そのため、 str[]="あいう"; printf("%c%c",str[0],str[1]); 他のサイトでよく見かける書き方。 しかし、macで実行すると、うまく表示できない。 そ…

# (c言語)変な文字が出力される。

状況 printfで出力した際に最後の方に変な文字(,�,p���U)が出力された。 原因 printf("%s")で終わりが見つからず領域外の文字まで出力している。 <詳細> printf("%s")は'\0'を見つけたら終わるという仕組みになっているが、配列を作る際にchar a[10]のように…

(c言語)2次元配列を作る(malloc対応)

状況 2次元配列の仕組みの振り返り 要素数nに対してmallocをどのようにしたらできるのかの備忘録 1次元配列 void main(){ int i; int a[2]={1,2}; for(i=0;i<2;i++){ printf("a[%d]=%d\n",i,a[i]); } } a[0]=1 a[1]=2 2次元配列 int i,j; int a[2][3]={{1,2,…

(c言語)リングバッファのキューの無駄をなくす

状況 リングバッファのキューは先頭に戻す処理時に1つ無駄ができることを知ったので、改善策を考えた。(enqueueのみ) リングバッファのキューとは リングバッファのキューは、キューの限界に領域まで達したら、先頭に戻すことでデキューをタイミングよくすれ…

(c言語)ポインタを用いたリスト

ココでは主に挿入と削除について話します。(最後に作成したものをチェックするprintも紹介します。) 単方向リスト 双方向リスト 単方向リスト 単方向リストとは 単方向リストは下の図のようなもので、1つのリストが次の行先のみを知っているようなものです。…

(C言語)文字配列と文字列の違い。

フォーマット演算子等についての違いが知りたい方は、以下の記事で書いてますので是非参考にしてみてください。 bluecat314.hatenablog.com 始めに 上の記事で int array [ ] ≒int* arrayと説明し、 ニアリーイコールがついていますがこのことについて話しま…

(C言語)2重ポインタについて

2重ポインタについて少しですがわかりやすくまとめて置きます。 そもそもポインタとは、 変数を定義したときに変数はアドレスというものを持っていて、その別名として変数名があるような形になっています。 このアドレスをつかさどるのがポインタです。 ポイ…

(C言語) 配列宣言の仕方([] *)

C言語の配列 c言語の配列で1年弱でようやく理解したのでまとめました。 配列のキャストについて printf時のフォーマット指定子 配列のキャスト 軽いまとめ int array≒int* array char array≒char* array [] , *をすることでキャストを宣言します。 補足 キャ…