阿九。 发表于 2021-7-19 08:54:43

小甲鱼课后作业:指针和数组


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

#define MAX 1024

int main()
{
    int n ,i = 0;
    char str1, str2;
    char *p1 = str1, *p2 = str2;

    printf("请输入一个字符串到 str1 中:");
    fgets(str1, MAX, stdin);

    printf("请输入要拷贝的字符个数:");
    scanf("%d", &n);
   

    printf("开始拷贝 str1 的内容到 str2 中...\n拷贝完毕!");
   
    while(n--)
    {   
      *(p2 + i) = *(p1 + i);

      if(*(p1 + i) == '\0')
      {
            break;
      }

      if((int)*(p1 + i) < 0)
      {
            i += 3;
      }
      if((int)*(p1 + i) >= 0)
      {
            i++;
      }
      
    }

    printf("现在,str2 中的内容是:%s", str2);

    return 0;
}

==============================
英文字母已完成,汉字拷贝变成乱码,
请各位大佬指点指点!

人造人 发表于 2021-7-19 09:22:11

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

#define MAX 1024

int main()
{
    int n ,i = 0;
    char str1, str2;
    char *p1 = str1, *p2 = str2;

    printf("请输入一个字符串到 str1 中:");
    fgets(str1, MAX, stdin);

    printf("请输入要拷贝的字符个数:");
    scanf("%d", &n);
   

    printf("开始拷贝 str1 的内容到 str2 中...\n拷贝完毕!");
   
    while(n--)
    {   
      *(p2 + i) = *(p1 + i);

      if(*(p1 + i) == '\0')
      {
            break;
      }

      if((int)*(p1 + i) < 0)
      {
            ++i;
            *(p2 + i) = *(p1 + i);
            ++i;
            *(p2 + i) = *(p1 + i);
            ++i;
            //i += 3;
      }
      //if((int)*(p1 + i) >= 0)
      else if((int)*(p1 + i) >= 0)
      {
            i++;
      }
      
    }

    printf("现在,str2 中的内容是:%s", str2);

    return 0;
}

阿九。 发表于 2021-7-19 15:31:17

人造人 发表于 2021-7-19 09:22


为什么要有两次
*(p2 + i) = *(p1 + i);
呢?

万千只cnm 发表于 2021-7-19 15:46:47

阿九。 发表于 2021-7-19 15:31
为什么要有两次
*(p2 + i) = *(p1 + i);
呢?

汉字可能占两个字符

人造人 发表于 2021-7-19 16:15:25

页: [1]
查看完整版本: 小甲鱼课后作业:指针和数组