我知道这是一个简单的问题,但我还是太困了,无法弄明白。 有人能帮助我吗?
char buf1[] = "one second program started\n";
char buf2[] = "one second program end\n";
int main(void)
{
write(1,buf1,100);
sleep(1);
write(1,buf2,100);
}
我需要打印第一个语句,然后在单元等待之后,打印第二个语句。但是,当我执行它时,两个语句都被打印,然后一个单元等待,第二个语句被打印两次。我哪里错了?
答案 0 :(得分:5)
将100
更改为strlen(buf1)
或strlen(buf2)
。
答案 1 :(得分:5)
write
不关心C字符串,它写的字符数与您指定的字符数完全相同(如果可以的话)。在你的情况下,它正在读取buf1
的结尾,这是未定义的行为。
如果要打印字符串,请使用puts
。
puts(buf1);
如果由于某种原因你 使用write
,请提供实际的字符串长度作为size参数。