首页 > 解决方案 > 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;
}

标签: c

解决方案


不要忽略编译器警告,它一定是在向你抱怨这个

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]);
  }

一次只输出一个字符


推荐阅读