【发布时间】:2010-03-23 00:13:43
【问题描述】:
我在尝试将 stdin 读入 char* 变量时遇到“总线错误”。
我只想阅读来自stdin 的全部内容并将其首先放入一个变量中,然后继续处理该变量。
我的代码如下:
char* content;
char* c;
while( scanf( "%c", c)) {
strcat( content, c);
}
fprintf( stdout, "Size: %d", strlen( content));
但不知何故,我总是通过调用 cat test.txt | myapp 返回“总线错误”,其中 myapp 是上面的编译代码。
我的问题是如何在 EOF 之前将 stdin 读入变量?正如您在代码中看到的,我只想打印来自标准输入的输入的大小,在这种情况下它应该等于文件的大小test.txt。
我认为只使用scanf 就足够了,也许是缓冲方式来读取stdin?
【问题讨论】:
-
为什么不直接使用 stat() 获取文件大小,然后使用文件大小 + 1 来(尝试) malloc 缓冲区,然后 read() 到缓冲区?