質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

576閲覧

コンソールで.libのファイルパスをコピペすると.libファイル名のみテキストファイルに出力するアプリを作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/08/25 17:12

編集2020/08/26 02:51

作りたいもの

**.libのファイルパスをコピペしてEOFを入力すると.libのファイル名のみをテキストファイルに書き込み即座に自動でそのファイルを画面に表示するソフトを作りたい。
**

実装したい動作

1、コンソール画面に.libのファイルパスをコピペして複数行あり最後に改行が付与されていない文字列
2、EOF(Ctrl + Z)を入力すると
3、テキストファイルに.libのファイル名(拡張子を含む)を書き込み即座にそのテキストファイルを出力
4、アプリを閉じると開いているテキストファイルが消える(生成して)

困っていること,知りたいこと

手順1はただ範囲選択してShift押しながら右クリックでパスをコピーするだけなので大丈夫です。
手順2はEOFを入力するだけなのでCtrl + Zを押して改行であるエンターを押す。大丈夫です。
手順3、からどうしたらいいかわかりません。全体的にどうしたらいいのでしょうかファイルに書き込むくらいは調べるので大丈夫です。が
拡張子を含むファイル名にする方法が知りたいです。あとテキストファイルを即座に表示させたいです。

手順4、これも知りたいです。そもそも方法があるのかすらわからないです。

※提示コードはとりえずここまで考えたので書きましたが正しいかどうかもわかりませんw

#include <stdio.h> char buffer[30000] = { "\0" };//入力 char data[3000];//入力した文字列 FILE *file; char c = 0; int new_line = 0;//改行の数 int i = 0; int j = 0;// /までの数をカウント int k = 0;//改行までの数をカウント int result = 0; int line = 0;//行 int row = 0;//列 int main() { printf("パスを入力してください。 Ctrl + Z で入力終了\n"); ////////////////////////////////////////////////// scanf_s("%[^EOF]",buffer,(unsigned int)sizeof(buffer)); ///////////////////////////////////////////////// printf("%s",buffer); return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

拡張子を含むファイル名にする方法が知りたいです。

_splitpath_s, _wsplitpath_s という関数があります。
第134章 _splitpath関数の新バージョン

あとテキストファイルを即座に表示させたいです。

何に表示させたいのでしょう?
メモ帳と仮定するなら、ShellExecute(Ex)でnotepad.exeを起動するという手があります。

投稿2020/08/26 05:38

編集2020/08/26 05:38
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問が変更されたので削除します。

投稿2020/08/26 00:07

編集2020/08/26 03:04
mjk

総合スコア303

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/26 02:59 編集

質問内容を編集しました。一行ではなく複数行で行いたいのです。
退会済みユーザー

退会済みユーザー

2020/08/26 03:38

すいませんでした。
guest

0

コンソール画面にファイルパスをコピペしてそれでEOFすると標準入力が抜けて最後に改行を付与してくれる動作

の文字通りであれば、

C

1#inlcude <stdio.h> 2int main(){ 3 while(getchar()!=EOF) ; 4 putchar('\n'); 5}

ですが、多分やりたいことと違うと思うので、やりたいことが伝わるようにちゃんと書いてください。

とはいえ、おそらく変数に入力したいのですよね?

C

1#inlcude <stdio.h> 2int main(){ 3 char line[1000]; 4 while(fgets(line, sizeof line, stdin)){ // EOFになるまで繰り返し 5 lineを使った処理; 6 } 7}

でしょうか。
#質問変更を受けての追記

拡張子を含むファイル名にする方法が知りたいです。あとテキストファイルを即座に表示させたいです。

C:\aaaa\bbbb\cccc\ddd.eeeからddd.eeeを得たいと言うことなら、一番右の\以降を取れば良いので、strrchr()関数を使います。

strrchr() 関数は、文字列 s 中に最後に文字 c が現れた位置へのポインタ を返す。

man strrchrより。

あとテキストファイルを即座に表示させたいです。

表示は、printfとかfputsとかで。
表示じゃなくて、もしかすると、エディタを外部起動したいと言うことですかね?

アプリを閉じると開いているテキストファイルが消える(生成して)

「アプリを閉じる」とは具体的に何のことでしょうか?
作るのはコンソールアプリですよね?GUIアプリじゃなくて。コンソールアプリに「閉じる」という概念はないです。

質問文中のscanf_sのコードは間違っていますので、上記のfgetsを使ったコードを使ってください。

投稿2020/08/25 22:43

編集2020/08/26 03:14
otn

総合スコア84618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/26 02:52

質問内容を大幅に編集したのでご覧いたただけどとありがたいです。
guest

0

やりたいことがよくわからないかったので、
勘で書いてます(^^;

#include <stdio.h> char buffer[30000];//入力 int main() { fputs("パスを入力してください。 Ctrl + Z で入力終了\n",stderr); size_t size = fread(buffer,sizeof (char), sizeof(buffer)-2,stdin); buffer[size] = '\n'; buffer[size+1] = '\0'; printf("%s",buffer); return 0; }

追加
それとも
scanf_s("%[^\x1a]",buffer,(unsigned int)sizeof(buffer));
strcat(buffer,"\n");
だけでもいいかな?

投稿2020/08/25 21:28

編集2020/08/25 22:19
PingHermit

総合スコア478

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問