53 lines
1.6 KiB
C
53 lines
1.6 KiB
C
|
|
#include <igraph.h>
|
|
|
|
#include <locale.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
int main(void) {
|
|
const char *filename = "weighted.gml";
|
|
igraph_t graph;
|
|
igraph_safelocale_t loc;
|
|
|
|
/* Initialize the library. */
|
|
igraph_setup();
|
|
|
|
/* Attempt to set a locale that uses a decimal comma. Locale names
|
|
* differ between platforms, and not all locales are available,
|
|
* so the locale change may not be successful. */
|
|
const char *locname = setlocale(LC_ALL, "de_DE");
|
|
struct lconv *lc = localeconv();
|
|
if (strcmp(lc->decimal_point, ",")) {
|
|
/* If decimal point is not a comma, presumably because the requested
|
|
* locale was not available, report locale information. */
|
|
fprintf(stderr, "setlocale() returned '%s', decimal point is '%s'\n",
|
|
locname ? locname : "NULL",
|
|
lc->decimal_point);
|
|
}
|
|
|
|
FILE *file = fopen(filename, "r");
|
|
if (! file) {
|
|
fprintf(stderr, "Cannot open %s file.\n", filename);
|
|
exit(1);
|
|
}
|
|
|
|
/* An attribute table is needed to read graph attributes. */
|
|
igraph_set_attribute_table(&igraph_cattribute_table);
|
|
|
|
/* At this point, the current locale may use decimal commas.
|
|
* We temporarily set a C locale using enter_safelocale() to
|
|
* allow the GML reader and writer to work correctly.*/
|
|
igraph_enter_safelocale(&loc);
|
|
if (igraph_read_graph_gml(&graph, file) != IGRAPH_SUCCESS) {
|
|
fprintf(stderr, "Reading %s failed.\n", filename);
|
|
abort();
|
|
}
|
|
igraph_write_graph_gml(&graph, stdout, IGRAPH_WRITE_GML_DEFAULT_SW, NULL, "");
|
|
igraph_exit_safelocale(&loc);
|
|
|
|
igraph_destroy(&graph);
|
|
|
|
return 0;
|
|
}
|