关于实现字符串的问题,如何解决?

img


头哥字符串复制,我感觉很简单,但是出现了乱码是为什么?水一水


for循环后加上:
if(i==n)
    t[i] = 0;

这样修改,供参考:

void strmncpy(char *s, int m, int n, char *t)
{
    /********* Begin ********/
    int i;
    for (i = 0; i < n; i++)
    {
        *(t + i) = *(s + m + i);
        if (*(s + m + i) == '\0') break;
    }
    *(t + i) = '\0';
    /******** End *********/
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7533445
  • 这篇博客也不错, 你可以看下【C语言程序】英国某超市职工统计水果的品种,并显示输出水果的名称。(两种方式输出)
  • 除此之外, 这篇博客: c语言---刷题02中的 38.喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include <stdio.h>
    int Num(int num) 
    {
    	static int more = 0;
    	if (more == 1 && num == 1) 
    	{//终止条件是more 和 num 都为 1
    		return 1;
    	}
    	if (more == 1) 
    	{//如果是奇数 ,上次有一个空瓶没有兑换, 则需要在下一步减 1,不然会多加一瓶水
    		num = num - 1;
    	}
    	more = num % 2;//如果此次的水是奇数,则在下一个循环 num 需要减掉 1
    	return num + Num(num / 2 + more);
    	//加的 more 是没有兑换的空瓶 如果为 1,则需要在下一层减 1
    }
    int main() 
    {
    	int ret = Num(20);
    	//int ret = Num2(20);
    	printf("%d\n", ret);
    	return 0;
    }
  • 您还可以看一下 吴刚老师的【吴刚】技术答疑与项目讲评视频教程(随时更新)课程中的 【项目解析】水墨效果宣传物料的制作方法和技术解析小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    答案:

    如果在字符串复制过程中出现乱码,可能是因为使用的复制方法存在问题。可以尝试使用更加稳定和正确的复制方法。以下是一些常用的字符串复制方法:

    1. strcpy()函数 strcpy()函数是C语言库函数中常用的一个字符串复制函数。使用该函数可以将source字符串的内容复制到destination字符串中,且不会出现乱码的情况。示例代码如下:
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char source[] = "hello world";
        char destination[20];
        strcpy(destination, source); // 将source复制到destination中
        printf("destination string is: %s\n", destination); // 输出结果为: hello world
        return 0;
    }
    
    1. strncpy()函数 strncpy()函数与strcpy()函数类似,也是字符串复制函数。不过它需要指定需要复制的字节数,以避免出现内存溢出和乱码的情况。示例代码如下:
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char source[] = "hello";
        char destination[7];
        strncpy(destination, source, sizeof(destination));
        printf("destination string is: %s\n", destination);
        return 0;
    }
    
    1. memcpy()函数 memcpy()函数是C标准库中的一个函数,在C++中也被广泛使用。它可以将指定长度的数据块从源地址复制到目标地址。示例代码如下:
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char source[] = "hello";
        char destination[7];
        memcpy(destination, source, sizeof(destination));
        printf("destination string is: %s\n", destination);
        return 0;
    }
    

    以上几种方法都可以避免字符串复制过程中出现乱码的情况。如果出现了乱码,应该检查代码中的错误,找到问题所在,并进行修复。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^