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

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

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

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

Q&A

1回答

982閲覧

C言語の入力の内容をファイルに出力したい

akasatanahama

総合スコア12

C

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

0グッド

1クリップ

投稿2019/06/27 05:58

編集2022/01/12 10:55

前提・実現したいこと

./a.out file command aaa bbb...としたときにC言語の入力の内容(今回ならaaa bbb)をファイルに出力したい

発生している問題・エラーメッセージ

出力の内容が記録されてしまう

ex)ping google.comならgoogle.comでなくpingの実行結果が保存される

該当のソースコード

C

1include<stdio.h> 2#include<stdlib.h> 3#include<unistd.h> 4#include<fcntl.h> 5 6int main(int argc, char *argv[]){ 7 int fd; 8 if((fd = open(argv[1], O_WRONLY|O_CREAT|O_TRUNC,0644)) < 0){ 9 perror(argv[1]); 10 exit(1); 11 } 12 close(1); 13 dup(fd); 14 close(fd); 15 16 argv[argc] = NULL; 17 char *argv1[argc]; 18 for(int i=0;i<argc-3;i++){ 19 argv1[i] = argv[i+2]; 20 } 21 argv1[argc-3] = NULL; 22 23 execvp(argv1[0], argv1); 24}

試したこと

様々なサイトを調べたが有力な情報は無かった。

補足情報(FW/ツールのバージョンなど)

C(gcc)

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

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

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

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

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

y_waiwai

2019/06/27 06:04

ちと質問の意味が不明です 記録されてしまう、とは具体的になにがどうなるんでしょうか。そして、あなたはなにをどうしたいのでしょう。文面からはイマイチイメージが浮かびません
mather

2019/06/27 06:32 編集

こちらのコードは何を参考にして作ったものでしょうか?参考にしたサイトのURLや書籍名などを提示いただければと思います。 > ex) ping google.comならgoogle.comでなくpingの実行結果が保存される 実際に行われて欲しい内容というのは、 ./a.out ping google.com の場合、 - ping は実行されない(無視される) - "google.com" という文字列がファイルに記録される という意図で合っていますか?
akasatanahama

2019/06/27 06:38

./a.out file ping google.com yahoo.co.jp ならpingが実際に行われ、またgoogle.com yahoo.co.jpという内容がfileというデータに書き込まれるようにしたいです。
mather

2019/06/27 06:53

そういうときは file ではなくて sample.txt のように書いたほうが伝わりやすいですね…。 pingが行われる、どんな ping が実行される想定ですか? という具体性の部分でわからないことだらけなので、 ./a.out sample.txt ping google.com yahoo.co.jp を例にして、 - 具体的に(引数になる部分も含めて)どんな ping コマンドが実行される想定か - 実行後の sample.txt の内容 を質問に書いてください。
akasatanahama

2019/06/27 07:00

- 具体的に(引数になる部分も含めて)どんな ping コマンドが実行される想定か $ ping google.com PING google.com (172.217.26.14) 56(84) bytes of data. --- google.com ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 1999ms これを実行したいです - 実行後の sample.txt の内容 google.com yahoo.co.jp こういう風にしたいです
mather

2019/06/27 07:03

> 質問に書いてください 質問内容として追記するようにしてください。
mather

2019/06/27 07:06 編集

上記の例では yahoo.co.jp はどうなるんですか?ファイルに文字列として出力する以外は無視すればいいんでしょうか。
izmktr

2019/06/27 09:58

argv[argc] = NULL; これ、メモリ破壊してませんかね…?
majiponi

2019/06/27 12:20

> argv[argc] = NULL; > これ、メモリ破壊してませんかね…? C言語の標準では、最後にNULLを置くことになっているので法的に問題はありません。(倫理上問題はありますが。)
otn

2019/06/27 13:01

意味もわからずコピペしたプログラムの修正方法を質問したということでしょうか?
guest

回答1

0

argv1 がひとつ足りないように思います。
2つの argc-3 をどちらも argc-2 にしたらどうなりますか?

投稿2019/06/27 23:14

kazuma-s

総合スコア8224

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問