ラベル C++ の投稿を表示しています。 すべての投稿を表示
ラベル C++ の投稿を表示しています。 すべての投稿を表示

2015年9月26日土曜日

文字列から改行文字を消す(C言語)

文字列の改行を消す

Cで入力文字列を扱っているとfgetsなど改行まで入り込む場合があります。それを消すための簡単なコード。

例:
#include <stdio .h>
#include <string .h>

#define LEN 32

/* 最期に入る改行を取り除く関数 */
void lntrim(char *str) {
  char *p;
  p = strchr(str, '\n');
  if(p != NULL) {
    *p = '\0';
  }
}


int main() {

  char str[LEN];

  puts("[trim]");

  printf("Please input string > ");
  fgets(str, sizeof(str), stdin);

/* trim 前*/
  printf("[%s]\n", str);

  lntrim(str);
/* trim 後 */
  printf("[%s]\n", str);

  return 0;

}
文字列からstrchr関数で文字のある場所を探しだし改行('\n')を('\0')終端に変えています。

strchr関数を使わない場合はループでマッチさせて同じように書き換えます。


/* strchr を使わない改行削除 */
void lntrim(char *str) {
  int i = 0;
  while(1) {
    if(str[i] == '\n') {
      str[i] = '\0';
      break;
    }
    i++;
  }
}


2015年8月7日金曜日

コマンドプロンプトからC/C++の64ビット用実行ファイルを作る

WindowsのC/C++開発環境

普段Linuxで開発を行なっている方も場合よってはWindowsでC/C++を試す機会があるかもしれません。
そんな中、Visual Studioの様なIDEを一々起ち上げるのは面倒です。Visual Studioにはclコマンドがありちょこっと試したい場合などに重宝します。

clコマンドはデフォルトでは32bitなので64bitで起ち上げてみます。

環境:
OS: Windows8.1(64bit)
IDE: Visual Studio Community 2015

まずVisual Studioはインストールしておいてください。
Visual Studio Communityはフルで24GBくらいあり個人が使うには恐ろしいほど膨大です。

clコマンド使用するには通常「開発者用コマンドプロンプト」というのをクリックします。
このショートカットはWindows8環境で以下の場所にあります。

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2015\Visual Studio Tools\開発者コマンド プロンプト for VS2015

普通に起ち上げると32bit環境で"C:\VBインストール先\Microsoft Visual Studio 14.0\"が作業フォルダになります。
これを64bit環境でコンパイルしたい場合は、ここに書いてあるとおりvcvarsall.batにamd64という引数をつけて起動させます。

方法: 64 ビットの Visual C++ ツールセットをコマンド ラインから有効にする
https://msdn.microsoft.com/ja-jp/library/x4d2c09s(v=VS.120).aspx

vcvarsall.batの位置は、"C:\VBインストール先\Microsoft Visual Studio 14.0\VC" にあり、コマンドプロンプトから叩けばいいだけです。

ただそこから作業場所を移動させるのが面倒くさいので、バッチファイルに書いてしまいましょう。
notepadを開き


@echo off
rem バッチファイルのある場所に移動
cd /d %~dp0
rem 64bitで起動させる
%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" amd64


と書きます。
そしてそのファイルを「cl64.bat」とでも名前をつけて保存します。
このバッチファイルを作業フォルダにおいておけばそれを叩くだけでその場所をカレントフォルダにした64bit C/C++簡易コンパイラの出来上がりです。

テストソース:
[C]
64test.c

#include <stdio.h>

int main() {


 int *pint;
 int len;

 len = sizeof(pint);
 printf("size = %d\n", len);

 return 0;

}


実行:
> cl 64test.c
> 64test
size: 8


[C++]
64test.cpp

#include <iostream>

int main(void) {

 int *pnum;
 int len;

 len = sizeof(pnum);
 std::cout << "size: " << len << std::endl;

 return 0;

}

実行:
> cl /EHsc 64test.cpp
> 64test
size: 8



間違いなく実行されてsize: 8という結果がでたら64bit用の実行ファイルが出来ています。
通常の開発者コマンドプロンプトは32bit用なのでsize: 4という結果になります。

Windows で簡易的に64bit用のC/C++の実行してみたいときに便利です。

2014年8月14日木曜日

SConsをインストールする

SConsとはコンフィギュレーションファイルがPythonで書かれたビルドツール。
Pythonで書かれたmakeの代替ツールの様なもの。
C/C++ファイルの依存関係を自動分析してビルドしてくれる。

今回必要になったのでsconsをインストールします。
CentOSにyumパッケージがあったのでそれで済まします。

# yum install scons

# scons -v
SCons by Steven Knight et al.:
script: v2.0.1.r5134, 2010/08/16 23:02:40, by bdeegan on cooldog
engine: v2.0.1.r5134, 2010/08/16 23:02:40, by bdeegan on cooldog
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation

これでOK


2014年5月7日水曜日

CでHello World

CでHello World

CでHello World
もっとも有名なイントロなので説明するまでもないですね。

#include <stdio.h>

int main(void) {
  
  printf("Hello World!");

  return 0;
}

2014年5月4日日曜日

CentOS 6でC/C++開発環境を整える

近年、パソコンの需要が急速に減退し、一気にスマートフォンに置き換わってきました。
ネット閲覧もパソコンからスマートフォンに主役が移ってきています。

そこでWeb周りの技術だけでなくネイティブアプリやデバイスの深い部分まで動かすにはC/C++の知識はどうしても必要になってきます。

ということでC/C++の入門から覚書まで適当に書いていきます。

使用環境:
CentOS 6.6 (Linux)

コンパイラのインストール

まず、ターミナルを開きC/C++が使える環境かどうか確認します。
$ which gcc
/usr/bin/gcc

$ which g++
/usr/bin/g++
と出ればコンパイル可能です。
無い人はyumでg++をインストールしてください
# yum install gcc gcc-c++
インストールできたら確認
$ g++ --version

g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
CentOSの標準リポジトリのものは少々古いものです。
最新のC++11に対応したい場合はgcc 4.7以上にしないといけません。

CentOSは実用を重視しているので標準で提供されているソフトウェアは安定はしていますが少々古いバージョンのものしか提供されていません。最新とは言いませんが、せめて今のトレンドが追えるバージョンをインストール出来ないかと思うユーザーも多いかと思います。

そういった要望に答えるべく開発元のRedHatはSoftware CollectionsとDeveloper Toolsetというソリューションを提供してくれました。
Software Collectionsでは開発者の要望の高かったPHPやMySQLなど比較的新しいバージョンを提供してくれます。Developer ToolsetはC、C++等開発者向けのツールが提供されています。
また/opt以下にインストールされ、新しいバージョンと古いバージョンを使い分けることが出来ます。

Developer Toolset2.0ではGCC4.8を提供してくれているのでそれを使いましょう。

# cd  /etc/yum.repos.d/
# wget http://people.centos.org/tru/devtools-2/devtools-2.repo
# yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ devtoolset-2-gcc-gfortran

これでインストール完了。
新しいバージョンのGCCを使うには次のコマンドで変更します。

$ scl enable devtoolset-2 bash
$ g++ --version
g++ (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
Copyright (C) 2013 Free Software Foundation, Inc.

これでCentOSでもC++11の開発が可能になります。

エディターのインストール

エディタは使い勝手のよくメジャーなEmacsを使用します。

$ which emacs

で無ければインストールしてください。

# yum -y install emacs

でバージョン確認

$ emacs --version
GNU Emacs 23.1.1
Copyright (C) 2009 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
...........

CentOSでは最新版ではないですが最新版が欲しい場合は
ここのミラーあたりからダウンロードして自分でmakeしてください。

NBAの1試合平均チームスタッツ (2025-26レギュラーシーズン)

前回 の元となったデータ、チーム毎の各スタッツ平均です。   team games w l win% PTS AST BLK STL ...