- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
先从一个很基础的关于字符数组的问题说起,我从书中的描述看不懂:
进一步研究本节中的示例,它定义了一个 getline() 函数,该函数读取一个字符串并计算其中的字符数。 you can see the entire code here (in this example getline() was changed to gline(), since getline() is already defined in newer stdio.h libraries)
函数如下:
int getline(char s[], int lim) {
int c, i;
for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) {
s[i] = c;
}
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
说明数组以这种方式存储输入:[h][e][l][l][o][\n][\0]
该函数将返回 6 的计数,包括 '\n' 字符,但这仅在循环因为 '\n' 字符而退出时才成立。
如果循环因为达到极限而退出,它将返回一个像这样的数组(据我所知):[s][n][a][z][z][y][\0]
现在计数也将是 6。
如果“snazzy”明显比“hello”长,比较两个字符串将返回它们相等,所以这段代码有一个错误(根据我的个人要求,因为我不想将 '\n' 算作字符串的一部分)。
为了解决这个问题,我尝试(在许多其他事情中)删除将 '\n' 字符添加到数组而不是递增计数器,我偶然发现当输入的字符多于数组可以存储的字符时,多余的字符会在输入缓冲区中等待,稍后将传递给 getline() 函数,所以如果我输入:
“时髦的哈哈\n”
它会像这样用完它:
第一个 getline() 调用:[s][n][a][z][z][y][\0]
第二个 getline() 调用:[ ][l][o][l][z][\n][\0]
此更改还引入了一个有趣的错误,如果我尝试输入恰好 7 个字符长的字符串(包括 '\n'),程序将立即退出,因为它会将 '\0' 字符传递给下一个字符getline() 调用将返回 0 并退出在 main() 中调用 getline() 的 while 循环。
我现在对下一步该做什么感到困惑。我怎样才能让它既不计算 '\n' 字符又避免它造成的错误?
非常感谢
最佳答案
C 中有一个约定,即字符串以空字符结尾。根据该惯例,您所有的问题都是基于。所以
不,它以\0 结尾,因为程序员把它放在那里了。
是的,但只是因为这个约定。除此之外,例如你分配比字符串长度多一个字节(char)来容纳这个\0。
字符串存储在字符数组中,例如char s[32];
或char *s = malloc(strlen(name) + 1);
关于c - K&R - 第 1.9 节 : understanding character arrays (and incidentally buffers),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35243498/
我的 Tableview 有 N 个部分,其中 0,1 个部分是固定的。永远不会从 TableView 中删除。但从第2节开始到第N节,可以删除或插入。从第 2 部分到 N 部分 -> 每个部分也有行
节/段指令有多重要?我注意到它们通常是可选的。另外,我注意到当您包含或不包含它们时,输出大小会发生变化。 我正在使用NASM ,如果有帮助的话。 最佳答案 它们非常重要,因为如果将字符串保存在代码段中
我正在尝试使用已解析并存储在字典中的Firestore数据填充tableview的Sections and Rows,看起来像这样... dataDict = ["Monday": ["Chest",
所以这应该是相当基本的......我正在这样做,但我想要求一些不同的选择。 一种选择是使用“平滑滚动”和 anchor 名称......但我发现这非常不一致。 这是我的 HTML 结构:
我尝试将 3 篇文章嵌套到一个部分中。为什么它们会溢出部分的边界? CSS: article{ border-right:solid 1px grey; height:50%; width:30%;
早上好伙计们,这只是我在这里的第二个问题,所以请耐心等待我和我的最低要求: 我刚刚写了这篇冗长的消息,说明如何将 ID 和 class 命令放在 section 而不是 容器中,以及为什么该部分突然覆
我正在尝试使用以下代码段编码消息: JAXBContext jContext = JAXBContext.newInstance(Iq.class); Marshall
我正在尝试使用以下代码段编码消息: JAXBContext jContext = JAXBContext.newInstance(Iq.class); Marshall
我需要生成一个 PDF 文档,其中我需要一些“章节”(连同其部分和小节)没有编号但仍包含在 ToC 中。 这是我的硕士论文。我正在使用 book 文档类,因为我不喜欢 memoir 默认值。 如果我使
我正在使用正则表达式来尝试匹配 INI 文件中的节 block 。我正在使用书中给出的食谱Regular Expressions Cookbook ,但它似乎对我不起作用。 这是我正在使用的代码: f
我有一个多线程进程,其中文件由多个线程共享(读取和写入)。有没有什么办法可以让一个线程锁定一个文件段,使其他线程无法访问它?我尝试过fcntl(fd, F_SETLKW, &flock),但是这个锁只
Closed. This question needs to be more focused。它当前不接受答案。
我正在尝试使用以下代码片段编码消息: JAXBContext jContext = JAXBContext.newInstance(Iq.class); Marshal
我使用的是分段 tableView。如果我单击 tableview,它总是将索引路径 0 传递给详细 View Controller 。如果我单击第二行,但它的 indexpath pass 总是传递
我有一个多线程进程,其中一个文件由多个线程共享(读取和写入)。有没有什么方法可以让一个线程锁定一个文件段,使其他线程无法访问它?我试过fcntl(fd, F_SETLKW, &flock),但是这个锁
我正在尝试使用以下代码片段编码消息: JAXBContext jContext = JAXBContext.newInstance(Iq.class); Marshal
我想创建一个“术语”部分,其中包含我正在使用的术语的定义,以便每次我在此术语部分中使用这些术语时,都会创建一个指向该定义的链接。 目前,我能想到的最好的方法是: .. |flavor| replace
文档引用 configuring information with stanzas ,但什么是节? 它只是配置子部分的一个花哨名称吗? 最佳答案 您是对的,在此上下文中,节是指 IBM MQ 配置文件
我正在尝试在消息包中接收 XMPP 自定义节。例如, wololo haiooh ... 关键是我知道我会收到一个“custom_sta
为什么这是有效的: (= '(:anything :goes :here) (filter (fn [x] true) '(:anything :goes :here))) 但不是这个? (= (:a
我是一名优秀的程序员,十分优秀!