在C中添加两个字符串

时间:2015-12-02 02:40:27

标签: c strcat

如何将字符串添加到我从scanf获取的字符串中?

这样做:

char animal[size];
scanf("%s", animal);

然后添加“它是animal吗?”无论输入什么,然后再将整个事物作为animal返回。

例如,如果我为animal输入'duck',它将使动物返回“它是鸭子吗?”

另外,我应该首先将?添加到animal然后添加“它是否为”?

3 个答案:

答案 0 :(得分:2)

这是一个快速而肮脏的工作示例,说明如何做到这一点。

然而,它不是非常安全/万无一失。例如,您可以使用animal轻松覆盖scanf()缓冲区。另外,如果您更改sprintf()中字符串的格式,则需要确保str有足够的空间。

#include <stdio.h>

int main()
{
    char animal[20];
    char str[29];
    animal[19] = 0; /* make sure animal is 0-terminated. Well, scanf() will 0-term it in this case anyway, but this technique is useful in many other cases.  */
    printf("Name the beast (up to 19 characters): ");
    scanf("%s", animal);
    sprintf( str, "Is it a %s?", animal );
    puts(str);
    return 0;
}

这是一个有点改进的版本。我们确保我们不会读取比animal缓冲区可以容纳的更多字符,为最容易维护的情况定义最大动物名称长度的预处理器宏,在用户输入的字符超出要求时捕获大小写,摆脱终止用户输入的换行符。

#include <stdio.h>
#include <string.h>

#define MAX_ANIMAL_NAME_LEN 9

int main()
{
    /* 1 char for 0-terminator + 1 to catch when a user enters too
       many characters. */
    char animal[MAX_ANIMAL_NAME_LEN + 2];
    char str[MAX_ANIMAL_NAME_LEN + 11];
    printf("Name the beast (up to %d characters): ", MAX_ANIMAL_NAME_LEN);
    fgets( animal, MAX_ANIMAL_NAME_LEN + 2, stdin );
    {
       /* fgets() may include a newline char, so we get rid of it. */
       char * nl_ptr = strchr( animal, '\n' );
       if (nl_ptr) *nl_ptr = 0;
    }
    if (strlen(animal) > MAX_ANIMAL_NAME_LEN)
    {
       fprintf( stderr, "The name you entered is too long, "
                        "chopping to %d characters.\n", MAX_ANIMAL_NAME_LEN );
       animal[MAX_ANIMAL_NAME_LEN] = 0;
    }
    sprintf( str, "Is it a %s?", animal );
    puts(str);

    return 0;
}

正如其他用户所指出的那样,C语言中的字符串作为C语言本身,可能会相当棘手。进一步的改进将是你的功课。搜索引擎是你的朋友。快乐学习!

您可能要注意的一个危险的陷阱是,如果用户键入的内容超过fgets()想要接受,则仍然可以从STDIN读取输入。如果稍后调用fgets()或其他输入函数,您将读取那些额外的字符,这可能不是您想要的!请参阅以下帖子:

How to clear input buffer in C?

C: Clearing STDIN

感谢chux指出这一点。

答案 1 :(得分:0)

如果你只想显示&#34;它是___?&#34;你可以像

一样输出它
char animal[size];
scanf("%s", animal);
printf("Is it a %s?", animal);

答案 2 :(得分:0)

如何将字符串添加到我从scanf获得的字符串?

添加两个不同的字符串,。

#include <stdio.h>
#include <string.h>
int main(void)    
{
    char animal[20], text1[20] = "Is it a ";
    scanf("%11s", animal);
    strcat(text1, animal);
    printf("%s\n", text1);
    return 0;
}