我想输入一个字符串,它总是包含偶数个字母。我希望它打印出字符串,但分成两半并在中间用“-”连接。我设法打印出单词的前半部分,但不是最后一个。
我已经尝试制作一个 for 循环,该循环从 user_input 的中间开始,并且应该将每个字母放入字符串“right”中。
int main() {
char user_input[STRING_LENGTH] = { 0 };
char left[STRING_LENGTH];
char right[STRING_LENGTH];
int lenght, mid, i;
printf("Please type in a string: ");
fgets(user_input, STRING_LENGTH, stdin);
user_input[strlen(user_input) - 1] = 0;
lenght = strlen(user_input);
mid = lenght/2;
for (i = 0; i < mid; ++i) {
left[i] = user_input[i];
}
for (i = lenght; i < mid; --i) {
right[i] = user_input[i];
}
}
如果输入是“airplane”,预期结果将是“airp - lane”。
最佳答案
考虑这部分:
for (i = lenght; i < mid; --i) {
right[i] = user_input[i];
}
right[0]
的内容在这种情况下是什么?您正在复制字符串的正确部分,但复制到了错误的位置。试试这个:
for (i = mid; i < lenght; i++) {
right[i-mid] = user_input[i];
}
此外,您应该以 null 终止这些数组。总而言之,它应该是这样的:
for (i = 0; i < mid; ++i) {
left[i] = user_input[i];
}
left[mid] = '\0';
for (i = mid; i < lenght; i++) {
right[i-mid] = user_input[i];
}
right[i-mid] = '\0';
printf("%s-%s", left, right);
关于c - 如何在不使用指针的情况下将字符串分成两半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58415293/