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年9月12日土曜日

Sassのエラー

SassのError: Inconsistent indentation:


Sassコマンドでcss変換をかけたら「Error: Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 4 spaces.」というエラーが出ました。一見、タブ関連の間違いかと思いますが、拡張子の間違いでした。Scss形式で書いた場合の拡張子は.scssです。

style.css → style.scss

こういう細かい間違いは気をつけなくてはならないですね。