wlkent 发表于 2020-2-4 23:13:51

C 实现 strncat 函数 当出现中文冒号时字符数不对

#include <stdio.h>

#define MAX 1024

int main()
{
        char str1;
        char str2;       
        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-5 10:27:48

算法是没有问题的,应该是字符个数错了:

wlkent 发表于 2020-2-6 00:11:05

一个账号 发表于 2020-2-5 10:27
算法是没有问题的,应该是字符个数错了:

我就是说不知道字符个数这里哪里出了问题= = TAT想求个大神帮帮忙 另外在线求一位喜欢做题 带我学代码 带我飞的大哥TAT

召唤风云 发表于 2020-2-6 11:20:12

汉字字符是很麻烦的。可以使用sizeof()直接求整个字符串的长度。对字符不懂的话建议你去看小甲鱼windows编程的第3集。里面介绍了字符集。可能会很复杂。

召唤风云 发表于 2020-2-6 11:20:49

有些汉字字符占两个字节。也有些占三个或者4个。

召唤风云 发表于 2020-2-6 11:22:39

或者你也可以去看一篇文章。https://blog.csdn.net/revilwang/article/details/8763911

wlkent 发表于 2020-2-16 14:55:47

召唤风云 发表于 2020-2-6 11:22
或者你也可以去看一篇文章。https://blog.csdn.net/revilwang/article/details/8763911

谢谢,之前上班有段时间没上来了… 之后复习的时候再修改学习,继续做作业了!
页: [1]
查看完整版本: C 实现 strncat 函数 当出现中文冒号时字符数不对