鱼C论坛

 找回密码
 立即注册
查看: 4790|回复: 11

一个函数strend(dst, src), 如果字符串src出现在dst的尾部, 该函数就返回1, 否则返回0

[复制链接]
发表于 2012-7-1 18:17:46 | 显示全部楼层 |阅读模式
5鱼币
我自己写了个, 但是看不出哪里不对. 麻烦帮我分析一下:
  1. #include <stdio.h>

  2. int strend(char *dst, char src);

  3. int main(void)
  4. {
  5.     char dst[] = "i luove you";
  6.     char src = 'u';
  7.        
  8.     printf("%d", strend(dst, src));
  9.        
  10.     return 0;
  11. }

  12. int strend(char *dst, char src)
  13. {
  14.     int k = 0;
复制代码


最佳答案

查看完整内容

逻辑严重错误,for (; (*(dst++)==src) && (*dst == '\0'); k=1),你这样for循环第一次执行的时候*(dst) =='i' 所以(*(dst++)==src)这个表达式的值为0,所以(*(dst++)==src) && (*dst == '\0')这个表达式的值也为0,所以直接退出循环,。。。若要想达到你要的功能。就写成 #include "stdio.h" int strend(char *dst, char src); int main(void) { char dst[] = "I love you"; char src = 'u'; ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-1 18:17:47 | 显示全部楼层

逻辑严重错误,for (; (*(dst++)==src) && (*dst == '\0'); k=1),你这样for循环第一次执行的时候*(dst) =='i'
所以(*(dst++)==src)这个表达式的值为0,所以(*(dst++)==src) && (*dst == '\0')这个表达式的值也为0,所以直接退出循环,。。。若要想达到你要的功能。就写成

#include "stdio.h"

int strend(char *dst, char src);

int main(void)
{
    char dst[] = "I love you";
    char src = 'u';
        
    printf("%d\n", strend(dst, src));
        
    return 0;
}

int strend(char *dst, char src)
{
        int i = 0;

        for(;*(dst+i) != 0; i++) ;

        if(*(dst + i - 1) == src)
                return 1;
        return 0;
}

评分

参与人数 1鱼币 +5 收起 理由
丿夏夜灬彬刂 + 5

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-1 18:18:19 | 显示全部楼层
请把代码复制, 这里显示不全
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-1 19:05:40 | 显示全部楼层
#include <stdio.h>
#include "string.h"   //这个头文件为了包含strlen函数

int strend(char *dst, char src);

int main(void)
{
    char dst[] = "i luove you";
    char src = 'u';
        
    printf("%d\n", strend(dst, src));
        
    return 0;
}

int strend(char *dst, char src)
{
        if(src == dst[strlen(dst) - 1])  //strlen函数是用来求字符串的长度。dst[strlen(dst) - 1] 这样是这个字符串的最后一个元素,
        {
                return 1;
        }
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-1 19:20:30 | 显示全部楼层
Tzdner_C 发表于 2012-7-1 19:05
#include
#include "string.h"   //这个头文件为了包含strlen函数

其实  这写法 我已写过 我想不借助别的函数. 谢谢关注
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-1 19:34:27 | 显示全部楼层
谁瞅谁怀孕 发表于 2012-7-1 19:20
其实  这写法 我已写过 我想不借助别的函数. 谢谢关注

那你是叫别人帮你写代码呢,还是改错误呢?该错误的话 你代码也没发全哦。。。。不就是个库函数吗,自己写一个就算了,也不算借助了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-1 19:42:28 | 显示全部楼层
Tzdner_C 发表于 2012-7-1 19:34
那你是叫别人帮你写代码呢,还是改错误呢?该错误的话 你代码也没发全哦。。。。不就是个库函数吗,自己写 ...

我发全了滴.. 只是论坛就这么显示, 您点击"复制代码"就可以了, 粘贴到记事本就能看到了. 顺便说句, 是帮我排下错哈. 不是帮我写. 呵呵
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-1 19:43:29 | 显示全部楼层
#include <stdio.h>

int strend(char *dst, char src);

int main(void)
{
        char dst[] = "i luove you";
        char src = 'u';
       
        printf("%d", strend(dst, src));
       
        return 0;
}

int strend(char *dst, char src)
{
        int k = 0;
        for (; (*(dst++)==src) && (*dst == '\0'); k=1)
                ;
        return k;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-1 20:29:16 | 显示全部楼层
谁瞅谁怀孕 发表于 2012-7-1 19:43
#include

int strend(char *dst, char src);

逻辑错误


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-1 21:58:37 | 显示全部楼层
你的题目写的是字符串出现在尾部 但是你的程序里又是字符 出现在尾部。。。:o
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-1 22:06:27 | 显示全部楼层
Tzdner_C 发表于 2012-7-1 20:58
逻辑严重错误,for (; (*(dst++)==src) && (*dst == '\0'); k=1),你这样for循环第一次执行的时候*(dst)  ...

太感谢了! 按照您的思路, 我把strend()函数改良了下:
int strend(char *dst, char src)
{
        for (; *(dst++);)
                ;
               
        if (*(dst-=2) == src)
                return 1;
               
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-1 22:10:52 | 显示全部楼层
丿夏夜灬彬刂 发表于 2012-7-1 21:58
你的题目写的是字符串出现在尾部 但是你的程序里又是字符 出现在尾部。。。

好吧 我承认打字没有动脑.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 01:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表