在键盘上输入一行字符,存入一个字符数组中,然后输出该字符串请填空 求解释下这个程序的各个步骤

在键盘上输入一行字符,存入一个字符数组中,然后输出该字符串请填空 求解释下这个程序的各个步骤从int i开始就不太懂

#include <stdio.h>
#include <math.h>
void main()
{
char str[81], *sptr;
int i;
for(i = 0; i < 80; i++)
{
str[i] = getchar();

if(str[i] == '\n')// 如果此时的字符是回车的话就不要执行循环出现火车意味
//着字符串输入结束 你没发现你输入完字符串最后巧了一下回车么?
//一旦是回车就会执行break for循环结束 
break;

}
str[i] = '\0';//for循环一旦结束就会执行这一句 注意此时i的值就是你输入的字
  //符个数 作用是在最后一个字符后面加上一个‘\0’字符用来作为c语言判断字符串结束的依据

sptr = str;  // 把字符串str 的首地址赋值给sptr 此时sptr的值就是str数组的首地址
while(*sptr) putchar(*sptr++); // 只要*sptr 就是以sptr的值 为地址的char个字节
//单元的值不是0('\0')就继续执行循环体(即:purchar(*sptr++)) 
//就是输出str里面的内容也就是你输入的字符串
}
//总结:这个题目抛开算法不说。其实就是考察你的字符串的是以什么为依据结束,
// 数组和指针变量的关系,以及循环语句的综合使用。

追问

那要是没有这句if(str[i]=='\n') breake;可不可以

追答

可以啊 不过这样的话回车就保存在数组最后了

温馨提示:答案为网友推荐,仅供参考
相似回答