在system()中使用变量并将其输出存储在文件中

时间:2015-04-29 06:19:34

标签: c linux shell

我想将system()的输出存储在使用字符串变量的文件中。

char file[10],command[100];
printf("Enter file name:\n");
fgets(file,10,stdin);
sprintf(command,"lsof | grep %s >> result.txt",file);
system(command);

result.txt显示为空。

2 个答案:

答案 0 :(得分:1)

输入

的数据后
fgets(file,10,stdin);

Enter 键。 fgets还在缓冲区(\n)中包含换行符(file),除非输入的长度超过8个字符。

要解决此问题,您需要从file剥离换行符,因为它是问题制定者。您可以使用string.h中的酷函数strcspn()来实现此目的。在fgets

之后添加以下内容
buffer[strcspn(buffer,"\n")] = 0;

或者,您可以使用熟悉的strlen()函数:

size_t len = strlen(buffer);

if(len > 0 && buffer[len-1] == '\n')
    buffer[len-1] = 0;

您还应该检查其返回值,检查system()fgets()是否成功。

答案 1 :(得分:0)

fgets(file,20,stdin);

应该是

fgets(file,sizeof(file),stdin);

PS:fgets()附带换行符