给指针赋值
#include <stdio.h>#define MAX 1024
int main()
{
char str1;
char str2;
int i = 0;
char *target1 = str1;
char *target2 = str2;
printf("请输入一个字符串到str1中:");
while((str1 = getchar()) != '\n')
{
;
}
printf("开始拷贝 str1 的内容到 str2 中。。。\n");
while ((*target2++ = *target1++) != '\0')
{
;
}
printf("拷贝完毕!");
printf("现在str2的内容是:%s",str2);
getchar();getchar();
}
请问这个程序必须用fgets函数吗,我用这个也可以运行,但是结果输出正确的结果之后,会出现很多别的汉字。 答案的代码是什么 zltzlt 发表于 2020-4-30 19:40
答案的代码是什么
#include <stdio.h>
#define MAX 1024
int main()
{
char str1;
char str2;
char *target1 = str1;
char *target2 = str2;
printf("请输入一个字符串到 str1 中:");
fgets(str1, MAX, stdin);
printf("开始拷贝 str1 的内容到 str2 中...\n");
while ((*target2++ = *target1++) != '\0')
;
printf("拷贝完毕!");
printf("现在,str2 中的内容是:%s", str2);
return 0;
} 用你那段代码 str1 尾部会多出一个换行符,这样试试:
#include <stdio.h>
#define MAX 1024
int main()
{
char str1;
char str2;
int i = 0;
char *target1 = str1;
char *target2 = str2;
printf("请输入一个字符串到str1中:");
while ((str1 = getchar()) != '\n')
{
;
}
printf("开始拷贝 str1 的内容到 str2 中。。。\n");
while ((*target2++ = *target1++) != '\n')
{
;
}
printf("拷贝完毕!");
printf("现在str2的内容是:%s", str2);
getchar();
getchar();
} zltzlt 发表于 2020-4-30 20:03
用你那段代码 str1 尾部会多出一个换行符,这样试试:
请问您的第19行代码等于'\n'这个是怎么来的呢,是数组后面自动带换行符吗? Juniorboy 发表于 2020-4-30 20:36
请问您的第19行代码等于'\n'这个是怎么来的呢,是数组后面自动带换行符吗?
不是,getchar() 得到的 \n (即回车)也会存储到字符数组中 Juniorboy 发表于 2020-4-30 20:36
请问您的第19行代码等于'\n'这个是怎么来的呢,是数组后面自动带换行符吗?
拷贝。。。直到拷贝结束(就是 =='\0') zltzlt 发表于 2020-4-30 20:37
不是,getchar() 得到的 \n (即回车)也会存储到字符数组中
明白了,谢谢。
页:
[1]