鱼C论坛

 找回密码
 立即注册
查看: 1101|回复: 6

[已解决]C 实现 strncat 函数 当出现中文冒号时字符数不对

[复制链接]
发表于 2020-2-4 23:13:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

#define MAX 1024

int main()
{
        char str1[MAX];
        char str2[MAX];       
        int count = 0;
        char *p = str1;
        char *q = str2;
        char *t = str2;
        int i,num;

       
       
        printf("请输入第一个字符串:");
    fgets(str1, MAX, stdin);
    printf("请输入第二个字符串:");
    fgets(str2, MAX, stdin);
    printf("请输入需要连接的字符数:");
        scanf("%d", &num);
       
          
    while(*p++ != '\0')
    {
//            count++;
                ;
        }
       

       
        if(*--p == '\0')
        {
                --p;
                while(count <= num)
            {
                    char ch = *t++;
                                       
                        if(ch == '\0')
                    {
                            break;
                        }
                        if((int)ch < 0)
                        {
                                t += 2;

                        }                

                        *p = *q;
                        q++;
                        p++;
                       
                        count++;
               
                }
               
        }
       
//        printf("count = %d\n", count);       
        printf("连接后的结果是:%s\n", str1);
       
        return 0;
}
       
哪个大哥帮我检查下啥问题啊……
新手难受
就是英文冒号就没有问题,中文冒号我查过了也是为负啊= =(这是带你学C带你飞的S1E22的课后作业) 就是想知道自己的算法哪里出了问题
最佳答案
2020-2-6 11:22:39
或者你也可以去看一篇文章。https://blog.csdn.net/revilwang/article/details/8763911
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-5 10:27:48 | 显示全部楼层
算法是没有问题的,应该是字符个数错了:

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 00:11:05 | 显示全部楼层
一个账号 发表于 2020-2-5 10:27
算法是没有问题的,应该是字符个数错了:

我就是说不知道字符个数这里哪里出了问题= = TAT想求个大神帮帮忙 另外在线求一位喜欢做题 带我学代码 带我飞的大哥TAT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 11:20:12 From FishC Mobile | 显示全部楼层
汉字字符是很麻烦的。可以使用sizeof()直接求整个字符串的长度。对字符不懂的话建议你去看小甲鱼windows编程的第3集。里面介绍了字符集。可能会很复杂。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 11:20:49 From FishC Mobile | 显示全部楼层
有些汉字字符占两个字节。也有些占三个或者4个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 11:22:39 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
或者你也可以去看一篇文章。https://blog.csdn.net/revilwang/article/details/8763911
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-16 14:55:47 | 显示全部楼层
召唤风云 发表于 2020-2-6 11:22
或者你也可以去看一篇文章。https://blog.csdn.net/revilwang/article/details/8763911

谢谢,之前上班有段时间没上来了… 之后复习的时候再修改学习,继续做作业了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 01:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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