如何使用strcat()[重复]连接字符串

问题描述 投票:-2回答:1

这个问题在这里已有答案:

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

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

我将列出代码中的缺陷。

  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 ) ;
}
© www.soinside.com 2019 - 2024. All rights reserved.