严凯 发表于 2020-11-26 10:01:25

超级简单

#include<stdio.h>
#define MAX 1024
int main()
{
        char str1,str2;
        char *target1=str1,*target2=str2;
        int i,a=1;
        printf("请输入一个字符串到str1中:\n");
        fgets(str1,MAX,stdin);
        printf("请输入要拷贝的字数:\n");
        scanf("%d\n",&i);
        while(a<=i)
        {
                a++;
                *target2++=*target1++;
        }
        printf("正在复制.....");
        getchar();
        printf("拷贝完毕,现在str2里面的内容是%s",str2);
}

//哪里出了问题?

jackz007 发表于 2020-11-26 10:36:57

      {
                a++;
                *target2++=*target1++;
      }
      * target2 = '\0' ;    // 添加此句试试

风过无痕1989 发表于 2020-11-26 10:56:06

本帖最后由 风过无痕1989 于 2020-11-26 13:51 编辑

#include<stdio.h>
#include<string.h>            // 后面程序用到了 strlen(),要添加头函数
#define MAX 1024
int main()
{
        char str1, str2;
        char *target1 = str1, *target2 = str2;
        int i, a = 0;
        printf("请输入一个字符串到str1中:\n");
        fgets(str1, MAX, stdin);
        printf("请输入要拷贝的字数:\n");
        scanf("%d", &i);         // 格式控制除控制字符外,不要添加任何其他的字符!
        while (i <= strlen(str1))
        {
                a++;
                *target2++ = *target1++;
        }
        printf("正在复制.....");
        getchar();
        printf("拷贝完毕,现在str2里面的内容是%s", str2);
}

严凯 发表于 2020-11-26 13:23:13

jackz007 发表于 2020-11-26 10:36


不行,还是一样打印不出来

严凯 发表于 2020-11-26 13:24:05

风过无痕1989 发表于 2020-11-26 10:56


也不行,会报错

风过无痕1989 发表于 2020-11-26 13:56:33

严凯 发表于 2020-11-26 13:24
也不行,会报错

若有报错,那就是第 8 行的变量 a 没有赋初值(上面的程序,我已经修改了)。没有赋初值,有些程序可以正常输出,有些程序则不行,而且各编译器的情况还不相同。下面是我在没有修改第 8 行时的输出

严凯 发表于 2020-11-26 14:43:10

风过无痕1989 发表于 2020-11-26 13:56
若有报错,那就是第 8 行的变量 a 没有赋初值(上面的程序,我已经修改了)。没有赋初值,有些程序可以正 ...

屏幕截图 2020-11-26 144241

奇宝 发表于 2020-11-26 15:40:26

这没有出现错误,在我这边是没有问题的。由于你使用了getchar();那是需要你在键盘上再按一次按键,然后回车才能看到结果

严凯 发表于 2020-11-27 19:00:53

奇宝 发表于 2020-11-26 15:40
这没有出现错误,在我这边是没有问题的。由于你使用了getchar();那是需要你在键盘上再按一次按键,然后 ...

我这边还是没有用,按了3次回车都没有显示
页: [1]
查看完整版本: 超级简单