标题:指针复制字符串的大写字母
只看楼主
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
结帖率:92.31%
已结贴  问题点数:5 回复次数:4 
指针复制字符串的大写字母

如上是题目,下面是我写的吧old的所有字符串复制粘贴到newstr的代码,对这个问题我的思考是添加判断条件,符合大写字母的才复制粘贴,请大佬完善,或者改进成更简单的。
程序代码:
#include <stdio.h>
#include <assert.h>

char* MyStrcat(char *dst, const char *src)
{
    assert(dst != NULL && src != NULL);
    char *temp = dst;
    while (*temp != '\0')
        temp++;
    while ((*temp++ = *src++) != '\0');

    return dst;
}

int main()
{
    char str1[10] = "abc";
    char str2[] = "bcd";
    char* str3 = MyStrcat(str1, str2);

    printf("str1=%s\n", str1);
    printf("str2=%s\n", str2);
    printf("str3=%s\n", str3);
    return 0;
}
搜索更多相关主题的帖子: 复制 temp 字符串 字母 char 
2020-05-09 15:25
星泪成寒
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:75
专家分:539
注 册:2013-5-19
得分:4 
程序代码:
#include <stdio.h>

char* upCopy(char *dst, const char *src)
{
    char *temp = dst;
    while (*src != '\0') {
        if ((*src >= 'a') && (*src <= 'z')) {//小写字符 转大写
            *(temp++) = *(src++) - 32;//大小写字母之间差值为32(‘a’ - ‘A’)
        } else {//其他字符 直接拷贝
            *(temp++) = *(src++);
        }
    }
    
    *temp = '\0';
    return dst;
}

int main()
{
    char str1[10] = "abcdefghi";
    char str2[10] = "bcd";
    char* str3 = upCopy(str1, str2);

    printf("str1=%s\n", str1);
    printf("str2=%s\n", str2);
    printf("str3=%s\n", str3);
    return 0;
}

2020-05-09 18:21
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
得分:0 
回复 2楼 星泪成寒
不是把小写转成大写的意思啦,是一串字符中把大写提取出来
2020-05-09 20:42
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
#include <stdio.h>
#include <ctype.h>

#define MAX_STR  1024

char* upCopy(char* newstr, const char* old)
{
    char* p = newstr;
    int i;
    for (i=0; i<MAX_STR && *old; ++old,++i)
    {
        if (isupper(*old))
            *p++ = *old;
    }
    *p = '\0';
    return newstr;
}

int main()
{
    char old[MAX_STR];
    char newstr[MAX_STR];
    scanf("%s", old);
    upCopy(newstr, old);
    printf("old: %s\n", old);
    printf("newstr: %s\n", newstr);
    return 0;
}
2020-05-10 05:24
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
得分:0 
#include <stdio.h>
#include <string.h>

void upCopy(char *newstr, char *old);
int main(void)
{
    char str1[10] = { 0 };
    char str2[] = "aCDesF";

    upCopy(str1, str2);

    printf("str1=%s\n", str1);
    printf("str2=%s\n", str2);

    return 0;
}


void upCopy(char *newstr, char *old)
{
    int j = 0;
    int len = strlen(old);
    for (int i = 0; old[i] != '\0';i++)
    {
        if (old[i] >= 'A' && old[i] <= 'Z')
        {
            newstr[j] = old[i];
            j++;
        }
    }
}
2020-05-11 09:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501516-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.181341 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved