繁体   English   中英

如何在主函数中打印新序列?

[英]How to print new sequence in main function?

我有一个程序,它将根据几个条件形成一个新的数字序列(序列+片段)。

我需要在主函数中打印在名为Concat的函数中形成的新序列,但还需要Concat返回 1,因此在主函数中知道要打印的序列是有效的。

这是我的代码:

#define BUFFER 50

int Concat(char sequence[], char piece[]){
    int sequenceValid = 1;
    int sizeSequence = strlen(sequence);
    if(sequence[sizeSequence-1] == piece[0]){
        sequence = strcat(sequence,piece);
    } else if(sequence[0] == piece[1]){
        sequence = strcat(piece,sequence);
    } else {
        sequenceValid = 0;
    }
    return sequenceValid;
}

int main()
{
 char piece[BUFFER], sequence[BUFFER];
 scanf("%s", sequence);
 scanf("%s", piece);

 if (Concat(sequence, piece)){
    printf("%s", sequence); // at this stage the new sequence formed above by the method `strcat` should be printed ( sequence + piece) not just the sequence, however only the sequence is printed. 
 }
 else{
    printf("piece %s cannot be added %s.",piece, sequence);
 }
}

根据我上面的注释,如果Concat函数返回 true(1) 它只打印用户给出的序列,而不是我想要的序列 + 片段。

测试示例:输入:

166335 21

所需输出:21166335

当前输出(错误):166335

如何在主函数中打印新序列?

当谈到 C 中的函数参数时,您需要记住三件事:

  1. 首先是像char sequence[]这样的参数实际上被视为char *sequence ,即它是一个指针。

  2. 第二件事是所有参数实际上都是函数的局部变量,它们的生命周期在函数结束时结束。

  3. 第三件事是所有参数都通过value传递,这意味着调用位置的值被复制到函数的本地参数变量中。

所有放在一起,一旦函数返回,您对sequence所做的所有分配都将丢失。

简单的解决方案:在末尾返回sequence (或无效序列上的空指针)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM