С, разделив строку пополам - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь написать функцию для деления строки пополам, но после первоначального ввода ничего не выводится.Моя цель - отсканировать год и сохранить первые два числа и последние два числа.Это код:

#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 голосов
/ 11 декабря 2018

Предполагая, что год является как минимум трехзначным числом, лучший способ его трактовать - это считать его числом, а не строкой:

...
int year;
scanf("%d", &year);
int first = year / 100;
int last = year % 100;
printf("%d %d\n", first, last);
...
0 голосов
/ 11 декабря 2018

не игнорируйте предупреждения компилятора, он должен жаловаться на вас об этом

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

не идетчтобы дать вам правильный вывод.ВЫ выводите строку каждый раз.То есть, если 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]);
  }

, чтобы выводить только один символ за раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...