注册 登录
编程论坛 C语言论坛

关于数组和指针的一道题 自定义gets函数

komorebi0110 发布于 2019-12-16 16:40, 1265 次点击
请定义函数实现
字符串strcpy,strlen,strcmp,strcat
和从输入流读取一行字符串(可能包含空格)的功能。
【注意】
你的程序不应该使用 string.h 头文件中的任何函数,
也不应该使用 gets、fgets 等与需求类似的输入函数。
请提交以下代码模板补全后的完整代码。
【代码模板】
// ↓↓↓请提交以下的所有内容↓↓↓
#include <stdio.h>
char* _strcpy(char* dest, const char* src) {
    // 在这里实现 strcpy
}
int _strlen(const char* str) {
   // 在这里实现 strlen
}
int _strcmp(const char* lhs, const char* rhs) {
   // 在这里实现 strcmp
}
char* _strcat(char* dest, const char* src) {
   // 在这里实现 strcat
}
char* _gets(char* str) {
   // 在这里实现 从输入流读取一行字符串(可能包含空格)
   // 你可以不考虑 EOF 的问题
}
int main() {
    char a[201],b[101],cmd[7];
    while(1) {
        _gets(cmd);
        if(_strcmp(cmd, "GETS") == 0) {
            puts(_gets(a));
        } else if(_strcmp(cmd, "STRCPY") == 0) {
            int offset;
            scanf("%d",&offset);
            getchar();
            _gets(b);
            _strcpy(a + offset, b);
            puts(a);
        } else if(_strcmp(cmd, "STRLEN") == 0) {
            printf("%d\n",_strlen(a));
        } else if(_strcmp(cmd, "STRCMP") == 0) {
            _gets(b);
            int result = _strcmp(a, b);
            printf("%d\n", result > 0 ? 1 : (result < 0 ? -1 : 0));
        } else if(_strcmp(cmd, "STRCAT") == 0) {
            _gets(b);
            puts(_strcat(a, b));
        } else {
            break;
        }
    }
    return 0;
}
// ↑↑↑请提交以上的所有内容↑↑↑
【样例输入】
GETS
Hello World!
STRCPY
6
Everyone
STRLEN
STRCMP
Hello Everyone
STRCAT
!
END
【样例输出】
Hello World!
Hello Everyone
14
0
Hello Everyone!
4 回复
#2
komorebi01102019-12-16 16:41
char* _gets(char* str) {
   // 在这里实现 从输入流读取一行字符串(可能包含空格)
   // 你可以不考虑 EOF 的问题
}
这个缺少的部分 求解答
#3
rjsp2019-12-16 18:05
你的程序不应该使用 string.h 头文件中的任何函数,
也不应该使用 gets、fgets 等与需求类似的输入函数。

你的意思是只允许使用 <stdio.h> 中的 getc 和 ungetc ?
那你就这么做吧,不停的 getc,直到 EOF 或 遇到'\n'
#4
komorebi01102019-12-16 19:41
回复 3楼 rjsp
还是不懂 我再想想555
#5
komorebi01102019-12-16 23:05
抄了一个大佬的代码 之后慢慢看好了
1