小甲鱼课后作业:指针和数组
#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;
}
==============================
英文字母已完成,汉字拷贝变成乱码,
请各位大佬指点指点! #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 09:22
为什么要有两次
*(p2 + i) = *(p1 + i);
呢? 阿九。 发表于 2021-7-19 15:31
为什么要有两次
*(p2 + i) = *(p1 + i);
呢?
汉字可能占两个字符
页:
[1]