落書きノート

ふと自分が気になった事を書いてます

C言語で問題を解く

解きながら学ぶC言語

解きながら学ぶC言語

// q11-5
#include <stdio.h>
#include <stdlib.h>

int str_chnum(const char *str, int c) {
  int i,cnt = 0;
  for(i = 0; *(str + i) != '\0'; i++) {
    if(*(str + i) == c)
      cnt++;
  }
  return cnt;
}

int main(void) {
  char *str,*ch;
  str = calloc(10, sizeof(char));
  ch = calloc(10, sizeof(char));
  printf("文字列を入力してください : ");
  scanf("%s", str);
  printf("検索する文字を入力してください : ");
  scanf("%s", ch);
  int cnt = str_chnum(str, ch[0]);
  printf("その文字は%d個含まれています。\n", cnt);
}

// q11-6
#include <stdio.h>
#include <stdlib.h>

void str_toupper(char *str) {
  int i;
  for(i = 0; *(str + i) != '\0'; i++)
    if(*(str + i) >= 'a' && *(str + i) <= 'z')
      *(str + i) = *(str + i) - ('a' - 'A');
    else
      continue;
}

void str_tolower(char *str) {
  int i;
  for(i = 0; *(str + i) != '\0'; i++)
    if(*(str + i) >= 'A' && *(str + i) <= 'Z')
      *(str + i) += 'a' - 'A';
    else
      continue;
}

int main(void) {
  char *str;
  str = calloc(20,sizeof(char));
  printf("文字列を入力してください : ");
  scanf("%s", str);
  str_toupper(str);
  printf("大文字 : %s\n", str);
  str_tolower(str);
  printf("小文字 : %s\n", str);
  return 0;
}

// q11-7
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void del_digit(char *str) {
  int i,j = 0;
  char *answer = calloc(20,sizeof(char));
  for(i = 0; *(str + i) != '\0'; i++)
    if(*(str + i) >= '0' && *(str + i) <= '9')
      continue;
    else
      *(answer + j++) = *(str + i);
  strcpy(str, answer);
}

int main(void) {
  char *str;
  str = calloc(20,sizeof(char));
  printf("文字列を入力してください : ");
  scanf("%s", str);
  del_digit(str);
  printf("数字文字を削除しました。\n");
  printf("str = %s\n", str);
  return 0;
}

// q11-7-another
#include <stdio.h>

void del_digit(char *str) {
  char *ptr = str;
  while(*str) {
    if(*str < '0' || *str > '9')
      *ptr++ = *str;
    str++;
  }
  *ptr = '\0';
}

int main(void) {
  char str[100];
  printf("文字列を入力してください : ");
  scanf("%s", str);
  del_digit(str);
  puts("数字文字を削除しました。");
  printf("str = %s\n", str);
  return 0;
}