标题:c语言:字符串替换
只看楼主
妖妖零
Rank: 2
等 级:论坛游民
威 望:1
帖 子:5
专家分:10
注 册:2022-9-8
结帖率:100%
已结贴  问题点数:10 回复次数:1 
c语言:字符串替换
Description
ACM队吉祥物cjc学长因为一次做了太猥琐的事,被学嫂罚去写检讨书300字,于是他开挂去网上找样本,但是样本中的名字不一样会有破绽,现在需要你来帮忙替换样本中的名字name为学嫂的名字doctorZ。
Input
先输入一个T,代表有T组数据。
每组测试数据有一个数据name(0 < name < 20),表示样本中的名字。
接下来一行输入检讨书内容(name < s < 1000)。
Output
修改后的内容。
Samples
input
1
mwy
Dear mwy, do not be angry, I love you! I should not be so wretched, I was wrong, please forgive me. In the future, I will absolutely obey the leadership of you!
output
Dear doctorZ, do not be angry, I love you! I should not be so wretched, I was wrong, please forgive me. In the future, I will absolutely obey the leadership of you!
Hint
 在单词中出现name也需要替换!

搜索更多相关主题的帖子: name not 替换 the 名字 
2022-11-11 22:16
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
在单词中出现name也需要替换!
要求很奇怪

每组测试数据有一个数据name(0 < name < 20),表示样本中的名字。
如果输入了“  abc  def  ”,那算它的名字是"abc",还是"abc def",还是"  abc  def  "?
这一点不交代清楚的话,代码没法写

程序代码:
#include <stdio.h>
#include <string.h>

int main( void )
{
    unsigned T;
    scanf( "%u ", &T );
    while( T-- )
    {
        char name[20+1]; // fgets会保留'\n'
        char s[1000+1]; // fgets会保留'\n'
        fgets( name, 21, stdin );
        fgets( s, 1001, stdin );
        size_t len_name = strlen(name) - 1;
        name[len_name] = '\0';

        for( const char* p=s; ; )
        {
            const char* q = strstr( p, name );
            if( q )
            {
                fwrite( p, 1, (size_t)(q-p), stdout );
                fputs( "doctorZ", stdout );
                p = q + len_name;
            }
            else
            {
                fputs( p, stdout );
                break;
            }
        }
    }
}

2022-11-12 11:17



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




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

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