Я хочу сохранить некоторую информацию в текстовом файле, я написал эту программу:Пустой файл при использовании Sprintf и функции системы на C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char *argv[])
{
FILE *fichier;
char buffer[20];
char command[200];
char command1[100];
system(" cat /etc/resolv.conf | grep nameserver | awk -F' ' '{print $2}' | cut -d'.' -f1-3 | awk '{print $1\".1\"}' > ethernet_dns.txt");
fichier=fopen("ethernet_dns.txt","r");
memset(&buffer,0,sizeof(buffer));
fread(buffer,20,1,fichier);
printf("buffer is: %s",buffer);
snprintf(command,sizeof(command),"ping -c 1 -W 1 %s > /tmp/ping_result",buffer);
printf("command is: %s",command);
system(command);
return 0;
}
Результаты:
команда возвращаетbuffer is: 127.0.1.1
command is : ping -c 1 -W 1 127.0.1.1
система это :
PING 127.0.1.1 (127.0.1.1) 56(84) bytes of data.
64 bytes from 127.0.1.1: icmp_seq=1 ttl=64 time=0.115 ms
--- 127.0.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.115/0.115/0.115/0.000 ms
Но когда я бегу: кот /tmp/ping_result.I получил пустой файл
Добавьте несколько отпечатков между ними. Или используйте отладчик. –
Проверьте возвращаемые значения вызовов функций, особенно вызовы 'system()' в этом случае. –
@JohnBollinger: Я отредактировал сообщение –