c语言,请解释一下我画波浪线的地方。。这个程序几乎全看不懂。。
发布网友
发布时间:2023-09-08 17:53
我来回答
共2个回答
热心网友
时间:2024-11-30 00:55
以下按波浪线的出现顺序标号:
1、char *p,定义了一个指针变量p,这个变量p中存储一个内存地址。*p表示该内存地址中的内容。那么,while(*p)表示的是该内存地址中的内容不为空(即内存地址中的内容不为0,一般情况下,一个字符数组中有内容,不为空;字符串结束时,有一个\0,即0.)时,就循环。实质上就是如果是字符就循环,遇到字符串结束,就终止循环。
2、同理,while(i<=3 && *p)表示当i<=3,并且该内存地址中的内容不为0时,就循环。实质上就是如果是字符就循环,遇到字符串结束,就终止循环。
3、同理,if(*p),实质上就是如果是字符就执行if后面的语句,遇到字符串结束,就不执行if后面的语句。
4、b[k++]=" ";表示字符数组b中的第b[k]个字符,赋值为空格,然后k++(即k=k+1)。这条语句相当于两条语句:b[k]="";k=k+1;
5、b[k]=‘\0’;一个字符串必须以\0结束。所以,在字符数组的第k位存储一个\0。
6、ch a[60],b[80];定义了两个字符数组,a能够存储60个字符,b能够存储80个字符。需要注意的时,以上所说的60、80中包括\0在内。
7、printf("Enter a String:");gets(a);这是两条语句,可以分成两行,
printf("Enter a String:");用来显示提示信息,让用户输入一串字符
gets(a);用来接收用户的输入,并且存放到字符数组a中。
8、printf("The Original String:");puts(a);也是两条语句,显示(确认)用户输入的字符串。
9、printf("\nThe String after insert space:");显示一条信息,意思是在字符串插入空格后的内容是:。其中\n在屏幕上换行
10、puts(b);printf("\n\n");输出进行函数调用后的字符串。
特别是,解释一下字符数组与字符串的区别:
char a[60];
定义了一个字符数组,可以存储60个字符。
如果按字符串显示时,例如puts(a),并不一定能够完全按60个字符输出,可能多于60个,也可能少于60个。
因为puts(a)函数,从第一个字符开始输出,直到遇到\0时为止,也就是说,\0以后的字符不再输出。
如果a[0]为\0,则什么出不显示。如果直到a[59]也没有遇到\0,puts函数会一直反内存a[59]中以后的地址中内容输出来,一般是乱码。如果a[7]是\0,则只显示前7个字符,即a[0]到a[6]共7个。
热心网友
时间:2024-11-30 00:56
char a[80],b[80];是定义字符数组,第二行printf("…");是输出里面的句子。gets(a);是向数组a里输入字符。puts(a);是输出数组a的各个元素。