我想将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显示为空。
答案 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()
附带换行符