我在大学有一项任务,要求我输入 2 行,然后替换它们。
如果您告诉我我在哪里犯了错误,我将非常感激。抱歉,英语不好。 _.
PS:这项任务还要求我编写具有几个函数的程序,而不是一个。因此,在我将代码拆分为函数之前,它一直在按需要工作。
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int entstr1(char *, int long1);
int entstr2(char *, int long2);
int plustr(char*, char*, char*, int, int, int);
int i;
int longall, long1, long2;
int main(void) {
char str1[7], str2[7], rstr[14];;
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
entstr1(str1, long1);
entstr2(str2, long2);
printf("%s", str1);
printf("%s", str2);
longall = long1 + long2;
printf("\n%d", longall); //
plustr(str1, str2, rstr, longall, long1, long2);
printf("\n\nResult line: %s", rstr);
return 0;
}
int entstr1(char *str1, int long1) {
printf("Enter 1 line: ");
fgets(str1, sizeof str1, stdin);
fflush(stdin);
long1 = strlen(str1);
printf("\nLength of 1 line: %d\n", long1); //
return 1;
}
int entstr2(char* str2, int long2) {
printf("Enter 1 line: ");
fgets(str2, sizeof str2, stdin);
fflush(stdin);
long2 = strlen(str2);
printf("\nLength of 2 line: %d\n", long2); //
return 1;
}
int plustr(char* str1, char* str2, char* rstr, int longall, int long1, int long2) {
for (i = longall-1, long1; i > long2; i--, long1--) {
rstr[i] = str1[long1];
}
for (i = long2; i != 0; i--) {
rstr[i] = str2[i];
}
return 1;
}
我添加了一些测试命令来查看“longall”是否具有不良值,确实如此! IDK 为什么它变成 0,但是 entstr1 和 entstr2 中的命令显示 long1 和 long2 具有正确的值,但是当它再次进入 main 函数时,两个变量中的值都变成 0)':
@Egor 我想知道我的代码是否完全实现了你的想法。你能检查一下它是否正确吗?然后,如果需要的话,我会解释它。但就你而言,你是相当优秀的编码员,每次看到这段代码都不需要任何解释。
这是:
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 7
int entstr1(char *, int *long1);
int entstr2(char *, int *long2);
int plustr(char *, char *, char *, int, int, int);
int main(void) {
char str1[MAX_LENGTH], str2[MAX_LENGTH], rstr[MAX_LENGTH * 2];
int longall, long1, long2;
entstr1(str1, &long1);
entstr2(str2, &long2);
printf("%s", str1);
printf("%s", str2);
longall = long1 + long2;
printf("\n%d", longall);
plustr(str1, str2, rstr, longall, long1, long2);
printf("\n\nResult line: %s", rstr);
return 0;
}
int entstr1(char *str1, int *long1) {
printf("Enter 1 line: ");
fgets(str1, MAX_LENGTH, stdin);
fflush(stdin);
*long1 = strlen(str1) - 1; // Adjust for the newline character
printf("\nLength of 1 line: %d\n", *long1);
return 1;
}
int entstr2(char *str2, int *long2) {
printf("Enter 2 line: ");
fgets(str2, MAX_LENGTH, stdin);
fflush(stdin);
*long2 = strlen(str2) - 1; // Adjust for the newline character
printf("\nLength of 2 line: %d\n", *long2);
return 1;
}
int plustr(char *str1, char *str2, char *rstr, int longall, int long1, int long2) {
for (int i = 0; i < long1; i++) {
rstr[i] = str1[i];
}
for (int i = 0; i < long2; i++) {
rstr[long1 + i] = str2[i];
}
rstr[longall] = '\0'; // Null-terminate the result string
return 1;
}
这是我的结果:
希望对您有帮助。