getop函数中的细节

orannnn 2016-03-12 03:08:24
如图,s[1]='\0'的作用是什么?
...全文
218 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这本书叫什么
orannnn 2016-03-15
  • 打赏
  • 举报
回复
引用 3楼galiniur0u 的回复:
s[i] = '\0';这种做法主要的目的是为字符串封尾,就是告诉编译器,这个字符数组到这个字符就结束了。
如果不用s[i] = '\0'这种做法,如果使用到s时,程序就会一直读到s的最后一个字符。就例如
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
char s[] = {'a', 'b', 'c', 'd'};
printf("%s\n", s);
s[2] = '\0';
printf("%s\n", s);
return 0;
}


如果操作字符数组能够明确的给出要操作到第几个,可以不写s[i] = '\0';
但是这个程序里,使用到s时是用while循环判断的,如果不是空格会结束循环,还有必要用s[1]='\0'吗?
galiniur0u 2016-03-15
  • 打赏
  • 举报
回复
while循环判断不是空格或者不是tab键才结束,判断的是s[0],而不是s[1]。书上这么写只是让人知道,字符串结尾字符是'\0'。 前面也说了,如果在操作字符数组的时候,你能够明确的从第几个字符结束扫描,是否加'\0'无所谓。
galiniur0u 2016-03-14
  • 打赏
  • 举报
回复
s[i] = '\0';这种做法主要的目的是为字符串封尾,就是告诉编译器,这个字符数组到这个字符就结束了。
如果不用s[i] = '\0'这种做法,如果使用到s时,程序就会一直读到s的最后一个字符。就例如
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
char s[] = {'a', 'b', 'c', 'd'};
printf("%s\n", s);
s[2] = '\0';
printf("%s\n", s);
return 0;
}


如果操作字符数组能够明确的给出要操作到第几个,可以不写s[i] = '\0';
orannnn 2016-03-12
  • 打赏
  • 举报
回复
引用 1楼qq_21794989 的回复:
就是判断是不是空字符或制表符 是就以\0字符串结束符赋值给数组s 就是不保存判断条件里面的东西
这一步可以省略吗,书中之前都没有这种用法,第一次遇到,所以是否是必须的?
IT界一码 2016-03-12
  • 打赏
  • 举报
回复
就是判断是不是空字符或制表符 是就以\0字符串结束符赋值给数组s 就是不保存判断条件里面的东西

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧