2021年7月7日水曜日

scanf はポインタでは入力できないのか

 C言語をやっていまして疑問があります。

プログラミングの質問サイトで訊けば良いのですが、結果が分かったのですが原因とか理由が知りたく、また、質問サイトで訊くのも緊張してしまうので、誰か親切な人がいたら教えてほしいという程度の質問です。

さて、

scanfという入力した文字列をメモリに取り込む関数がありますが、取り込む変数を配列にすればうまくいくのですが、ポインタだとできないのです。

具体的にソースなどを書きます。

まず、

-----------------------------------------

#include<stdio.h>

int main()
{
    char a[60];
printf("文字列入力\n" );
scanf("%s",a);
printf("結果-%s\n", a);
    return 0;
}

こんなソースでコンパイルします。

作業環境は、Linux Mint コンパイラはgccです。

実行結果です。

------------------------------------------------------------

$ gcc scanf.c

$ ./a.out
文字列入力
adgsfshghshfhsfh
結果-adgsfshghshfhsfh

$

------------------------------------------------

ちゃんとできました。

 次に、入力する変数をポインタに変えた場合です。

------------------------------------------------------------------

#include<stdio.h>

int main()
{
    char *a;
printf("文字列入力\n" );
scanf("%s",a);
printf("結果-%s\n", a);
    return 0;

------------------------------------------------

変数を配列からポインタに変更してコンパイル、実行の結果です。

----------------------------------------------------------

$ gcc scanf.c

$ ./a.out
文字列入力
aggasfdsfdhas
結果-(null)

$

------------------------------------------------------

さあ、どうしてこうなるのか分かる人がいたら教えてください。という話です。

よろしくおねがいします。


2021年4月5日月曜日

前回書いたブログ

 https://happy-everyday-ubuntu.blogspot.com/2021/04/weedoglinux.html

ここで書いたFMV-BIBLO NB8/900Lという古いPCの話。

WeedogLinuxは諦めて、Tiny core Linuxをインストールしました。

ブートローダーのGRUB4DOSの設定が分からなかったのですが、以下のページにて解決いたしました。

https://ja.osdn.net/projects/puppylinux-jp/wiki/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%2F%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80 

一応、オフラインでの使用としてのPuppy Linuxもインストールして、

Window xpとPuppyとTiny coreの3つが入ったパソコンになりました。

ネット接続のため、Tiny coreが必要でした。

まだ詳しくありませんがブラウザのインストールが必要なようで、それができれば大体成功と言えましょう。 

 

2021年4月3日土曜日

Weedog_Linuxのインストールができない

 https://weedoglinux.rockedge.org/viewtopic.php?p=226

Weedog_linuxというディストリビューションを

FMV-BIBLO NB8/900L というパソコンに、xpとデュアルブートしようとしていましたが、

インストールはできているようなのですが、起動ができないのです。

できた人がいたら指導していただきたいです。

Live DVDからは起動できるのですが、ハードディスクにただコピーしただで、その後、パピーリナックスのgrub4dos とか云うソフトでブートの設定もしたつもりです。

電源を入れるとWeedogとxpなどの選択画面が表示され、Weedogを実行するが、途中で止まってしまいキー入力も受け付けない状態になってしまうのです。

で、強制終了させています。

2021年2月6日土曜日

「xfce4-terminal 0.8.9.1 Xfce ターミナルエミュレーター」ls アルファベット順に表示

 ubunutが入ったPCをLubuntuを入れて使っていて重かったし、不具合が起きてきたので、ディストリビューションをLinux Minx Xfceに変更しました。

そこには TimeShift という機能があり、システムの復元ができるそうです。

それがハードディスクを16GB以上消費していて、Linuxのドライブでは残りの容量が2GBも無いという状態になってしまいました。

そこで、もともとインストールされているWindows Vistaのドライブを小さくしてその部分をLinuxで使うことにしました。

今までVistaでダウンロードなどしたファイルがたくさんあり整理していました。

ダウンロードのフォルダにあるファイルが何のファイルなのかを、Windows10のパソコンで調べていました。

その時は、Vistaで起動していたので、Vistaでネット接続は危険だそうですから、ファイル名をWindows10で入力して検索していました 。

それが面倒だから、ダウンロードフォルダ内のファイルを一覧で.txtファイルにしてWindows10に持ってきて調べるのが効率が良いと思いました。

そこで、Vistaでそれが可能なソフトを探しました。

Filelist Creator というソフトがあり、Linux版もありました。

そこで、Linuxのターミナルからコマンド ls で表示して、それをテキストにコピペすれば良いと思いました。

ls と打つと表示されたのですが、ファイル名の頭文字が大文字と小文字で分けられていたのです。

ファイラーでは、区別なくアルファベット順でしたので、それでは都合が悪いと調べたところ、

ls -f

とすることで、アルファベット順になりました。

しかし、LinuxでVistaのダウンロードフォルダが参照できるなら、Linuxから、ファイルについて調べて、ファイルの整理をすれば良いと行き着きました。

EX6100 NETGEAR 無線LAN中継機