忍者ブログ
日々の研究生活のメモ書きなど
3ヶ月前から動かないコードが手元にあった
元々は3年以上前に自分が書いたコードなのだが、なぜか一括で
% make
とするとコンパイルがそこで止まる・・・
特に手を加えたわけでもないのになーぜー

Dropboxで過去のファイルに戻ろうとするも、古すぎて履歴が残っていない(もしかしたら、ファイルをコピーして作ったからとか移動させたからかもしれない)

とりあえず急務なものでもなかったので、放置してた
(実はそれがけっこう便利なプログラムで、周波数と周波数スペクトルの値を渡すと横軸質量、縦軸inspiral rangeのグラフを書いてくれる)

コンパイルが通らない理由がやっとわかって、コードの中からカンマがなくなっていた
「いや、なんでだよ」と言わざるを得ない・・・




コードに一つ改良を加えた
今までpdfしかグラフ出力できなかったが、与えた出力ファイル名から拡張子を判断してグラフを書かせる
今までこういうグラフ処理までさせるときは実行部分をC言語で書いて、グラフ描画をシェルスクリプトと分担していたが、今回のコードはかなり前のなので全部C言語でやっていた

そのためにはまず与えた文字列から拡張子を判断する必要がある
strrchrを使う
strchrも似たような文字列検索だけど、こっちは後ろから検索するので拡張子を見つけられる
そもそも.で検索すれば一発なはずだから、どっちを使っても同じ結果になるはずだけど後ろの情報が欲しいので実行時間を減らすためにもsttchrで
(.が2個以上あったら困るんじゃない?と思うかもしれないけど、たぶんMacでは.が2個あるファイルが作れない)

■ 使い方
cFindが検索する対象の文字列
cKeywordが検索する文字列(int型)
#include
char *strrchr(const char *cFind, int cKeyword);
例えば
cFind="hoge.png";
cKeyword=".";
だとすると、返り値は .png になる
拡張子にするためには 1つポインタを進めればよい(っていう表現で合ってる・・・?)


■ 例文
初めて使って動いたのでたぶんこんな感じなんだろう、知らん
char *cTerm=""; //初期化大事
int cKeyword = '.'; //検索する文字列
cTerm = strrchr( output, cKeyword); // cTermになんか入る

if( cTerm == NULL ) {
// こっちはkeywordが見つからなかったとき
//なんか例外処理
}else{
// keywordが見つかったとき
cTerm++; // これで.の後ろの文字列からなので拡張子になるはず
//なんか処理
}






PR
この記事にコメントする
Name
Title
Color
E-Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
#include <stdio.h>
#include "MyProfile.h"

#define TWITTER coffee_pote

#ifdef RICH_FLAG
// ↑いつも支援いただきありがとうございます m(_ _)m
#define WISH_LIST
amazonのほしい物リスト
#endif


int main(void){

printf("\n");
printf("あけましておめでとうございます\n");
printf("今年もどうぞよろしくお願いします\n");
printf("\n");
printf("猿でもわかるgnuplot を執筆中\\
少し追記しました\n");
/* 最終更新 2018/01/01 */
return 0;

}
カウンター
ブログ内検索
ツイートするボタン
Flickr

Template "simple02" by Emile*Emilie
忍者ブログ [PR]