为什么这里用字符数组可以,用字符指针就没输出?
从教课书考了一个程序, 只把变量BUF从 CHAR BUF[1024]改为CHAR *BUF, 为啥程序能运行,却无输出了呢: 先谢谢了:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
main()
{
char buf[1024]; 《----------
char *args[64];
for (; {
/*
* Prompt for and read a command.
*/
printf("Command: "
if (gets(buf) == NULL) {
printf("n"
exit(0);
}
/*
* Split the string into arguments.
*/
parse(buf, args);
/*
* Execute the command.
*/
execute(args);
}
}
/*
* parse--split the command in buf into
* individual arguments.
*/
parse(buf, args)
char *buf;
char **args;
{
while (*buf != NULL) {
/*
* Strip whitespace. Use nulls, so
* that the previous argument is terminated
* automatically.
*/
while ((*buf == ' ') || (*buf == 't'))
*buf++ = NULL;
/*
* Save the argument.
*/
*args++ = buf;
/*
* Skip over the argument.
*/
while ((*buf != NULL) && (*buf != ' ') && (*buf != 't'))
buf++;
}
*args = NULL;
}
/*
* execute--spawn a child process and execute
* the program.
*/
execute(args)
char **args;
{
int pid, status;
/*
* Get a child process.
*/
if ((pid = fork()) < 0) {
perror("fork"
exit(1);
}
/*
* The child executes the code inside the if.
*/
if (pid == 0) {
execvp(*args, args);
perror(*args);
exit(1);
}
/*
* The parent executes the wait.
*/
while (wait(&status) != pid)
/* empty */ ;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
指针不分配空间,run-》core
偶也经常犯这样的错误
同意kenduest 不过huniu 下次贴代码请用其所长code功能这样大家会好看一点
非常感谢你的帮助,咱这就试试。
改成 char *buf 是會發生一些錯誤,因為你沒有配置一塊內存空間 (memory) 供程式使用。
要這樣寫請使用 malloc() 先配置一塊 buffer 給程式使用。ex
复制代码
記得最後要釋放該區塊。
复制代码
==