【问题标题】:string editing and concatenation with user defined functions使用用户定义的函数进行字符串编辑和连接
【发布时间】:2020-05-23 16:53:05
【问题描述】:

我正在执行 C 语言的指针赋值。任务内容是输入100个字符以内的两个字符串,第一行包含相同或不同的字符串,第二行在第一个字符串的空格处加下划线。我先完成了代码,比较两个字符串的代码运行良好,但是将 _ 添加到第一个字符串的代码不会打印结果。此任务的限制是不能使用string.h,并且在输入两个字符串的代码中使用gets。因为strcmp应该用来比较两个字符串,而string.h不能用,所以我为比较两个字符串的函数创建了strcmp的原型。

这是我的代码:

#include <stdio.h>
int comparison(const char* one, const char* two) {
    for (; (*one != '\0') || (*two != '\0'); one++, two++) {
        if (*one != *two) {
            printf("two strings are different.");
            return -1;
        }
    }
    printf("two strings are same.");
    return 0;
}

void addUnderBar(char* str) {
    while (*str) {
        if (*str == ' ') {
            *str = '_';
        }
        ++str;
    }
}

int main(void) {
    char str1[100];
    char str2[100];

    printf("please input your first string");
    gets_s(str1, sizeof(str1));
    printf("please input your second string");
    gets_s(str2, sizeof(str2));

    comparison(str1, str2);
    addUnderBar(str1);
}

【问题讨论】:

  • 似乎很适合我

标签: c function pointers


【解决方案1】:

将 _ 添加到第一个字符串的代码不会打印结果

因为您没有打印结果。你只需拨打这个电话:

addUnderBar(str1);

这个函数不像你的其他函数那样调用printf。最好为特定任务保留一个函数,所以在添加下划线后打印结果:

addUnderBar(str1);
printf("\n%s", str1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-26
    • 2022-08-23
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多