我正在尝试编写一个将字符串分成两半的函数,但是在初始输入后它什么也没输出。我的目标是扫描一年并保存前两个数字和后两个数字。这是代码:
#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;
}
答案 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);
...