关于字符串输入输出的疑惑。
Dear all 该代码为C中12章编程练习第二题,目的为使得可以在n个字符后,或第一个空格、制表符、换行符后停止读取输入,由上述情况中最先被满足的那个终止读取(不能用scanf()函数)。
现对红色mark的部分十分不理解,假设n=5,我输入chand后,*(p+i)='\0'不会覆盖字符'd'??对其原理十分不明白希望各位指教,谢谢.
#include <stdio.h>
#include <ctype.h>
void input(char *p, int n);
int main(void)
{
char a[81];
int n;
puts("input the char number of your string:");
scanf("%d",&n);
getchar();
puts("input your string:");
input(a,n);
puts(a);
return 0;
}
void input(char *p, int n)
{
int i;
for (i=0;i<n;i++)
{
*(p+i) = getchar();
if( isspace(*(p+i)) ) break;
}
*(p+i) = '\0';
}