前提・実現したいこと
Linuxカーネルの勉強を始めましたが、開始早々に躓き途方に暮れております。
基礎的な質問であり大変恐縮ですがご教授願います。
[目的]
C言語を使用してLinuxのバージョン情報をコンソールに表示する。
(Linuxコマンド"$cat /proc/version"等と同様の結果が得られるようにする)
他にも、CPUの型およびモデル、システム起動からの経過時間も同じようにCプログラムを介して表示させる。
発生している問題
実行すると以下2,3行目のように豆腐表示となります。
4行目以降が、catコマンドで実行した場合です。
該当のソースコード
C言語
1#include<stdio.h> 2#include<stdlib.h> 3 4int main(){ 5 FILE *infile; 6 int ver; 7 8 infile=fopen("/proc/version","r"); 9 while(ver=fgetc(infile)!=EOF){ 10 printf("%c",ver); 11 } 12 printf("\n"); 13 fclose(infile); 14 return(0); 15 16}
試したこと
文字コードが原因と思い、ソースコード側及び元ファイル(バージョン情報)側共にutf-8へ変換したが、
改善が見られませんでした。
変換は、viエディタの":set fenc=文字コード"で行っています。
別途バージョン情報を書いたテキストファイルを生成し、これを読み込んでみましたが結果は同様でした。
補足情報
・gcc ver.7.3.0
[解決後メモ]
・変数初期化大事
・関数複数試す
・優先度の再確認
・そもそも文字コードが原因であれば出力文字が全て同じになる事は無い??
・gcc -Wallオプションの使用
→全ての警告オプション有効
回答2件
あなたの回答
tips
プレビュー