注册 登录
编程论坛 C语言论坛

希望各位大佬给点思路

Wuhaoran2002 发布于 2021-01-04 20:28, 1771 次点击
有一字符串,内有若干个字符,再输入一字符,要求程序在该字符串的首端中插入该字符。要求:分别定义3个外部函数用来输入字符串、插入字符、输出字符串。
5 回复
#2
apull2021-01-05 10:49
从后往前遍历,把各个字符后移1位,最后把这个字符插入到字符串第一个位置上
#3
Wuhaoran20022021-01-05 11:10
回复 2楼 apull
#include<stdio.h>
int main()
{
    void input(char c[]);
    void output(char c[]);
    void insert(char c[]);
    char c[10];
    printf("请输入一串字符\n");
    input(c);
    printf("请输入插入的字符\n");
    insert(c);
    output(c);
    return 0;
}
void input(char c[])
{
    int i;
    for(i=0;i<10;i++)
    {scanf("%c",&c[i]);}
}
void output(char c[])
{
    printf("%s",c);
}
void insert(char c[])
{
    int j;
    char b;
    scanf("%c",b);
    for(j=8;j>0;j--)
    {
        c[j+1]=c[j];
    }
    c[0]=b;
}

这样有什么问题吗
#4
apull2021-01-05 12:12

程序代码:


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

int main()
{
    void input(char *str, size_t n);
    void output(char *str);
    void insert(char *str, const char c);
    char c, str[12]; //多2个位置保存插入字符和\0

    printf("请输入字符串\n");
    input(str, 10);

    printf("请输入插入的字符\n");
    input(&c, 1);

    insert(str, c);
    output(str);

    return 0;
}

void input(char *str, size_t n)
{
    char ch;
    size_t i = 0;
    for (; i < n; i++)
    {
        ch = getchar();
        if (ch == '\n')
            break;
        *(str + i) = ch;
    }
    if (n > 1)
        *(str + i) = '\0';
}

void output(char *str)
{
    printf("%s\n", str);
}

void insert(char *str, const char c)
{
    size_t len = strlen(str) + 1;
    char *p = str + len;

    while (len)
    {
        *p = *(p - 1);
        p--;
        len--;
    }
    *p = c;
}

#5
Wuhaoran20022021-01-06 18:09
回复 4楼 apull
谢谢
#6
huangbo_0312021-01-08 16:19
可以直接用 strcat , 将字符串拼接到字符后面
    const char* s = "abc";
    char c;
    printf("请输入一个字符: ");
    scanf("%c", &c);
    char dst[strlen(s) + 2];
    dst[0] = c;
    dst[1] = 0;
    strcat(dst, s);
    printf("dst: %s\n", dst);
1