c - 如何使用 strcat() 连接字符串

标签 c

此代码想要连接字符串,但不显示输出

#include<stdio.h>
#include<string.h>
main( ) 
    {  
    char *str1 = "United" ;  
    char *str2 = "Front" ;  
    char *str3 ;  
    str3 = strcat ( str1, str2 ) ;  
    printf ( "\n%s", *str3 ) ; 
    }

最佳答案

我会列出代码中的缺陷。

  1. “United”和“Front”是字符串常量,这意味着它们无法修改。
  2. strcat 将第二个字符串添加到第一个字符串中,因为第一个输入是常量字符串,因此无法执行该操作。
  3. printf 只需要“str3”。

有两种方法可以纠正代码,a)通过scanf获取str1 b)通过strcpy获取str1

我已经提供了第二种解决方案,str1 & str3 都会有最终的答案。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main( )
{
        char *str1=malloc(20 * sizeof(char));
        char *str2 = "Front" ;
        char *str3 ;
        if(str1){
                strcpy(str1,"United");
                str3 = strcat ( str1, str2 ) ;
                printf ( "%s\n", str3 ) ;
                free(str1);
        }
        else{
                printf("malloc failure!\n");
        }
}

引用评论我添加了一个没有动态内存分配的版本:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main( )
{
        char str1[20];
        char *str2 = "Front" ;
        char *str3 ;
        strcpy(str1,"United");
        str3 = strcat ( str1, str2 ) ;
        printf ( "%s\n", str3 ) ;
}

关于c - 如何使用 strcat() 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55095311/

相关文章:

c - 如何初始化包含 union 数组的结构

c - 为什么我的 C 应用程序没有生成 coredump

c - 双指针字符串的大小是多少?

c - 将 double* 添加到 double 变量

c - 使用按位运算符进行优化

c - 如何用 C(在 Linux 中)编写定时器?

C虚拟操作

c - 初始化结构数组

C 检测文件末尾的最后一个新行

c++ - 以编程方式查询 Linux 机器的电源状态