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++;
  }
}


0 件のコメント:

コメントを投稿

NBA選手のスタッツを偏差値で比べてみる

スタッツの偏差値を求める NBA2025-26のレギュラーシーズンが終了し、様々な分析がされています。  こちらでは日本人に馴染み深い偏差値で比べてみたいと思います。 試合数が少ないと飛び値が出やすいので50試合以上に出場した選手から算出しています。 まずは1試合あたりの平...