Производится чтение из базы даннных слов и имен файлов (которые содержат эти слова) и запись их в текстовый файл в следующем формате: файл состоит из 2 колонок, разделенных пробелом, первая колонка - это слова из файлов, вторая колонка - это имена файлов. Хочу спросить производит ли следующая программа данные действия:
#include <iostream>
//using namespace std;
#include <stdio.h>
#include "libpq-fe.h"
#include <string>
#include <cstdio>
#include <stdlib.h>
int main() {
PGconn *conn;
PGresult *res;
int rec_count;
int row;
int col;
FILE *stream;
conn = PQconnectdb("hostaddr=192.168.1.8 port=5432 connect_timeout=10 dbname=NexentaSearch user=postgres password=valter89");
if (PQstatus(conn) == CONNECTION_BAD) {
fprintf(stderr, "Connection to database failed: %s\n",PQerrorMessage(conn));
puts("No connection");
exit(0);
}
res = PQexec(conn, "SELECT a.value, c.value FROM therms a INNER JOIN therms_occurs b ON b.therm_id = a.id INNER JOIN fs_entries c ON b.file_id = c.id ORDER BY a.value, c.value");
if (PQresultStatus(res) != PGRES_TUPLES_OK) {
printf("We didn't get the data");
exit(0);
}
rec_count = PQntuples(res);
printf("We got %d records.\n", rec_count);
puts("==========================");
stream=fopen("/usr/indexes.txt", "w");
for (row=0; row<rec_count; row++) {
for (col=0; col<2; col++) {
fprintf(stream, "%s ", PQgetvalue(res, row, col));
if ((col=1) && (row < rec_count-1))
{
fprintf(stream, "\n");
}
}
}
puts("==========================");
PQclear(res);
PQfinish(conn);
fclose(stream);
return 0;
}
Конкретно интересует правильность 2-х операторов fprintf: вернее для первого соответствие поставленному результату, а для второго - допустимость отсутствия фактических аргументов.
Продвижение своими сайтами как стратегия роста и независимости