有一句代码无法理解作用: *target2 = '\0';
来自S1E22中动手题第1的进阶,不明白为什么需要这句,这句代码的作用是什么.第34行.
#include <stdio.h>
#define MAX 1024
int main()
{
char str1;
char str2;
char *target1 = str1;
char *target2 = str2;
int n;
char ch;
printf("请输入一串字符串到 str1 中: ");
fgets(str1, MAX, stdin);
printf("请输入需要拷贝的字符个数:");
scanf("%d", &n);
printf("开始拷贝 str1 的内容到 str2 中...\n");
while(n--)
{
ch = *target2++ = *target1++;
if(ch == '\0')
{
break;
}
if((int)ch < 0)
{
*target2++ = *target1++;
}
}
*target2 = '\0';
printf("拷贝完毕!\n");
printf("str2 :%s", str2);
return 0;
} dev c++中文字使用2个字节存储 因为字符串以 '\0' 作为结束符
printf 从第一个开始读读读读…读到'\0'不读了,就这了~停了~ 风过无痕丶 发表于 2018-2-22 17:13
因为字符串以 '\0' 作为结束符
printf 从第一个开始读读读读…读到'\0'不读了,就这了~停了~
但是复制时,str2应该从str1中吧'\0'也复制了吧? Piziaa 发表于 2018-2-22 17:17
但是复制时,str2应该从str1中吧'\0'也复制了吧?
懂了,因为n限制了复制字符个数.
谢谢
页:
[1]