アプリ版:「スタンプのみでお礼する」機能のリリースについて

学校の授業でC言語でのプログラミングを勉強しています.

Ubuntuでプログラムを書いているのですが,先日,
ファイルを開き,その中身のデータを用いた計算をして,別のファイルに保存する
というプログラムを書く内容の課題が出ました.
先生からテキストファイルが与えられているのですが,右クリックで 名前を付けて保存 を押して保存しても,プログラムの中で fopen を使ってファイルを開くことができません.

また,エクスプローラーの中でUbuntuを検索して,それと同じファイルにいれればいいのかと考えたのですが,検索することでしかUbuntuのファイルを見つけることができませんでした.

どうすればプログラムの中でデータの入ったテキストファイルを使うことができるでしょうか.

A 回答 (5件)

> ご回答ありがとうございます.


> ダウンロードされたものを見つけることはできました.
> また,エクスプローラー上で無理やりUbuntu内のディレクトリにコピーすることができました.

うーん、ちょっと待って。
最初に環境確認したけど、やっぱWSL?「コンピュータのOSとしてUbuntuをインストールして使っているわけではない」?
エクスプローラって言ってるけど、それは「Windows」のエクスプローラですかね?
つまり、さっきから言ってるのは

「Windows上のwebブラウザでダウンロードしたブツをWSL側から探せない」

って話なんですか?
だとしたら

「そりゃフツーはそうだろ」

ってだけの話なんですが(笑)。いや、出来ないたぁ言わないけど、今やってるみたいにメンドくせぇ事になってんじゃねぇかな(笑)。

> また,エクスプローラー上で無理やりUbuntu内のディレクトリにコピーすることができました.

どこに入れたんでしょうか。キチンと/homeディレクトリ内に入れました?変なトコに入れてない?ああダメよよしてそこは後ろの穴よ(謎

WSLだったら多分デスクトップ環境は無くって、ホンマ端末だけの環境なんかな。
ううん・・・ええとねぇ・・・。

まず、Ubuntuでファイルをダウンロードする方法から教えます。
Linuxにはwgetと言うプログラムがあるのね。一回端末から

wget --version

って打ってみて下さい。入ってたら色々とwgetと言うソフトのバージョン情報やら何やら表示されます。
入ってなかった場合、

sudo apt install wget

と打って、Ubuntuにwgetと言うソフトウェアをインストールします。

それで、端末で、

wget ダウンロードしたいファイルのHTTPアドレス

でホームフォルダに目的のブツがダウンロードされます。
このwgetってコマンドはかなり強力で、通常のブラウザでダウンロード出来ない、保護されたようなブツでもヘーキで取ってきたりするコマンドです。エロ画像とかダウンロードするのに良く使われます(謎
それはさておき、その先生が提示したアドレスを使ってwgetでダウンロードした方がまず間違いがないでしょうね。

それで、あとはプログラムファイル自体が/home直下なのか、そしてコンパイルしたa.out(まあ、名前付けてるのかもしれないですが)も/home直下にあるのか、確認して下さい。
そして、プログラムを端末から実行する際、端末で(作ったプログラムがa.outだと仮定して)、

a.out

ではなくって

./a.out

と打って起動します。前者は、フツーは「起動した際のリスクを回避する為に」禁じ手になっています。
    • good
    • 2
この回答へのお礼

ありがとうございます!
おっしゃる通りです,私が使っていたのがWindowsのエクスプローラーなんです...
表現が本当にわかりづらかったですよね,なんといえばいいのかわからなくて,とても言葉足らずでした,本当にごめんなさい!

現在,学校のサイトがメンテナンス中のため,HTTPアドレスが拾って来れないのですが,拾えるようになったらすぐにでも拾って来ようと思います!

本当にありがとうございます!
非常に助かりました...!

お礼日時:2020/08/01 23:38

> 名前を付けて保存 ではなく,保存 を押せば自動的にそこに入るようになっているのでしょうか.



それは「ブラウザからダウンロードして」って事ですかね。
まあ、Linuxディストリビューションによって違うんでしょうが、さっきも書いた通り、どのディストロでも基本、入ると「/home」フォルダが作業場になってて、ユーザーはそこで作業するようになっています。そして、ユーザーにまつわる設定やフォルダも全部そこにある。
んで、WindowsみたいなGUI環境が最近では当たり前なんで、/homeフォルダ直下に、例えば「デスクトップ」があったり、ダウンロードしたブツを入れる「ダウンロード」フォルダが存在したりしてます。この辺はWindowsの環境を模してる例が多いです。
(余談ですが、元々UNIXは「マルチユーザー」による「マルチログイン」が前提なOSなんで、そのため、個人にまつわる設定は、ホームフォルダごとユーザー毎に作られるようになっています。)

そうすると、現時点、そのテキストファイル(データ)がどこにあるのか、って事なんですが、ダウンロードフォルダ内を見るには端末で

ls ダウンロード/

と打てばダウンロードフォルダ内に何があるか一覧表示してくれます。
ダウンロードしたブツが見つけられましたか?無ければ別の場所にあるんでしょう。
その場合、どっちにせよ、/homeフォルダ内のどっかにあるだろうから(さっき書いた通り、UNIX/Linuxだと通常、/homeフォルダ以外は管理者権限の嵐なんで、そこらに何かのブツをダウンロードする、と言うのは管理者権限がないと出来ない)、/homeフォルダから次のコマンドを走らせて目的のブツを見つけましょう。

find . -name "目的のファイル"

どこにあるか確定したら、そいつを/homeフォルダ直下に持ってくるなり、あるいは、fopenにfindコマンドで表示されたパスを埋め込めば、題意を満たせると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.
ダウンロードされたものを見つけることはできました.
また,エクスプローラー上で無理やりUbuntu内のディレクトリにコピーすることができました.
その後,プログラムを用いて fopen で開こうと思ったのですが,開くことができませんでした.なにかまだ問題があるのでしょうか...
質問ばかりで申し訳ないです.
答えていただけたら幸いです.

お礼日時:2020/08/01 18:20

>すみません,どのディレクトリにあるかわからないです.



Ubuntuは使っていませんが、その親であるDebianではホームディレクトリにDownloadというディレクトリがあって何も指定しなければそこにダウンロードされるので、Ubuntuでも同じではないかと思います。
    • good
    • 0
この回答へのお礼

なるほど...ありがとうございます.
見てみようと思います.

お礼日時:2020/08/01 17:11

> Ubuntuでプログラムを書いているのですが



ちょっと状況が読めないんですが、仮想環境か何かなんですかね。WSL?

> プログラムの中で fopen を使ってファイルを開くことができません.

Ubuntuの問題と言うより、

1. プログラムがUbuntuのどこに置いてあるのか分かっていない
2. fopenで開く時に渡すパスがハッキリしていない。

の2つでしょう。んで、一般論的に言うと「何とも言いようがない」です。

まず、プログラムを保存すべきフォルダですが・・・・。うーん。
基本的にUbuntu等のUNIX/Linux系全般に言える事ですが、「個人の為の作業フォルダ」ってのがありまして、通常/homeフォルダ(あるいは専門的にはディレクトリ)と呼ばれるブツがあります。ここがログインした際に入る場所と大体なっています。Windowsで言うと・・・多分、一種「ドキュメント」フォルダでしょうねぇ(ちょっと違うかもしれませんが)。
いずれにせよ、この場所(/home)フォルダはデフォルトで色々とパスも通ってますし、ここが「個人の作業用」として作られてる以上、個人で使うファイル(プログラムファイルやデータファイル)もここに作ったり、あるいは、ここにまたフォルダを作って作業したりします。
原則、UNIX/Linuxだと「ユーザー」はホームフォルダ以外には顔を出さないんですよ。このフォルダ以外の場所だとWindowsでも悪名高い「管理者権限」だらけのフォルダばっかで、素人がそこを触るとシステムが壊れてしまいます。怖いですねぇ。

取り敢えずUbuntuを使う際・・・端末で

pwd

と打って、今いる場所を確認して下さい。恐らく

/home/ユーザー名

と表示されるでしょうから(希望的観測)、そうであれば、そこがホームフォルダです。データもプログラムもそこに置いておけば、fopenですぐ開く事が可能だと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.
はい,今いる場所はそのように表示されました.
名前を付けて保存 ではなく,保存 を押せば自動的にそこに入るようになっているのでしょうか.
詳しく教えていただきありがとうございます!

お礼日時:2020/08/01 17:11

保存先のパス名が、/xxx/yyy/zzz/file.txtだとするならば、fopenで同じパス名を指定すればファイルを開けます。

まず、ファイルを保存した時にそれがどのディレクトリに保存されたかわかっていますか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.
すみません,どのディレクトリにあるかわからないです.
学校のサイトからファイルを保存するのですが,その時に保存先をどこにすればいいかがわからなくて...
ファイルを保存する際,エクスプローラー内のどこに保存するかを選択すると思うのですが,直接Ubuntu内のディレクトリに保存することができるのでしょうか...

お礼日時:2020/08/01 16:56

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