strcpy 和 strcat 有时会引起问题

2023-12-14

你好,我有一个如下代码

char *str ;

        strcpy(str, "\t<");
        strcat(str, time);
        strcat(str, ">[");
        strcat(str, user);
        strcat(str, "]");
        strcat(str, "(");
        strcat(str, baseName);
        strcat(str, ") $ ");

        printf("\String is now: %s\n", str);

这段代码似乎可以工作,但是当我使用 XCode 分析函数时,它说“函数调用参数是一个未初始化的值”,而且它有时会导致我的程序崩溃。当我删除它时,它工作正常......这有什么问题吗?谢谢


strcpy and strcat用于将字符串复制并连接到分配的 char 数组。

Since str在未初始化的情况下,您正在内存中的某个位置写入,这很糟糕,因为您正在破坏其他数据。它可能在那一刻起作用,但迟早你的程序会崩溃。

您应该在声明 str 时分配内存:

char str[100];

Also, strcat效率不高,因为它需要搜索字符串末尾才能知道在哪里连接字符。使用sprintf会更有效率:

sprintf(str, "\t<%s>[%s](%s) $ ", time, user, baseName);

最后,如果不能保证生成的字符串适合数组,最好使用 snsprintf。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

strcpy 和 strcat 有时会引起问题 的相关文章

随机推荐