标题:设计一个left函数,实现从某字符串中取左侧n个字符的子串的功能,如果n超过 ...
只看楼主
yeluo9
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-5-31
结帖率:0
 问题点数:0 回复次数:2 
设计一个left函数,实现从某字符串中取左侧n个字符的子串的功能,如果n超过字符串长度,则输出“输入有误”
第一行输入一个字符串
第二行输入一个整数n
#include"stdio.h"
void left(char *pa,char *pb,int n);
main()
{
   char from[100]={},to[100]={};
   int n;
   //gets(from);
   scanf("%s",from);
   scanf("%d",&n);
   left(from,to,n);
   puts(to);
}
void left(char *pa,char *pb,int n)
{
    @@1
                 
    @@1
    *pb=*pa;
    pb++;
    @@2

    @@2
}
@@1和@@2之间是填空的,有大佬会吗,老师都懵
搜索更多相关主题的帖子: left 输入 char pb from 
2019-05-31 13:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
不会,但我在别处看到一个同样功能的代码,不知道对你而言有没有参考作用

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

size_t strleft( const char* restrict src, char* restrict dst, size_t n );

void test( const char* s, size_t n )
{
    char buf[100];
    if( n == strleft(s,buf,n) )
        puts( buf );
    else
        puts( "输入有误" );
}

int main( void )
{
   test( "abcdefg", 3 ); // 输出 abc
   test( "abcdefg", 7 ); // 输出 abcdefg
   test( "abcdefg", 8 ); // 输出 输入有误
}

size_t strleft( const char* restrict src, char* restrict dst, size_t n )
{
    size_t count = 0;
    for( ; count!=n && src[count]; ++count )
        dst[count] = src[count];
    dst[count] = '\0';
    return count;
}

2019-05-31 16:30
yeluo9
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-5-31
得分:0 
感谢大佬,我先去调试一下
2019-05-31 16:56



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




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

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