C,将字符串分成两半

时间:2018-12-10 22:55:04

标签: c

我正在尝试编写一个将字符串分成两半的函数,但是在初始输入后它什么也没输出。我的目标是扫描一年并保存前两个数字和后两个数字。这是代码:

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char scan_year2() {
  char year_number;
  scanf("%s", year_number);
  return year_number;
  return 0;
}
// Function to print n equal parts of str
void divideString(char *str, int n) {
  int str_size = strlen(str);
  int i;
  int part_size;

  if (str_size % n != 0) {
    printf("Invalid Input: String size");
    printf(" is not divisible by n");
    return;
  }

  part_size = str_size / 2;
  for (i = 0; i < str_size; i++) {
    if (i % part_size == 0)
      printf("\n");
    printf("%s", str[i]);
  }
}

int main() {
  char year_number;
  scan_year2();
  char str = year_number;
  divideString(str, 2);
  getchar();
  return 0;
}

2 个答案:

答案 0 :(得分:0)

不要忽略编译器警告,它一定在向您抱怨

char scan_year2() {
  char year_number;
  scanf("%s", year_number);
  return year_number;
  return 0;
}

您尝试返回两次。

 part_size = str_size / 2;
  for (i = 0; i < str_size; i++) {
    if (i % part_size == 0)
      printf("\n");
    printf("%s", str[i]);
  }

不会给您正确的输出。每次都输出字符串。 IE如果str =“ 1923”,那么您将得到

1923923
232

你应该做

 part_size = str_size / 2;
  for (i = 0; i < str_size; i++) {
    if (i % part_size == 0)
      printf("\n");
    printf("%c", str[i]);
  }

一次只能输出一个字符

答案 1 :(得分:0)

假定年份至少是一个三位数的数字,最好的处理方式是将其视为数字,而不是字符串:

...
int year;
scanf("%d", &year);
int first = year / 100;
int last = year % 100;
printf("%d %d\n", first, last);
...