Мне нужно прочитать неопределенную матрицу из текстового файла на языке C, и я хочу прочитать ее по строкам, чтобы каждая строка была целым массивом. Но как я знаю где конец строки, так как я не могу использовать «\ n» для символов? Вот код:Конец целочисленной строки в C
#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
using namespace System;
typedef struct
{
int *v;
int n;
}vector;
int main(array<System::String ^> ^args)
{
vector *a;
FILE* f;
int n = 15;
int i = 0;
int j,k;
if ((f = fopen("C:\\Users\\Mirelaa\\Documents\\visual studio 2013\\Projects\\MatriceNedefinita\\MatriceNedefinita\\Debug\\fisier2.in", "rt")) == NULL)
{
printf("Fisierul nu poate fi deschis!");
exit(1);
};
a = (vector *)malloc(n * sizeof(vector));
while (!feof(f))
{
a[i].v = (int*)malloc(n * sizeof(int));
a[i].n = 0;
//citeste rand
//citesti fiecare element din rand
j = 0;
while (a[i].v[j] != '\0')// wrong!!
{
fscanf(f, "%d", &a[i].v[j]);
j++;
a[i].n = a[i].n + 1;
}
for (k = 0 ; k < a[i].n ; k++)
{
printf("%d", a[i].v[j]);
printf("\n");
}
i++;
if (i == n)
{
n = 2 * n;
a = (vector *)realloc(a, n * sizeof(vector));
a[i].v = (int *)realloc(a[i].v, n * sizeof(int));
}
}
return 0;
}
Читайте в строке за раз, а не по целому ряду ... затем прочитайте свои строки из этой строки. 'fgetln()' возможно. – mah
Прежде всего, [в C вы не должны указывать результат 'malloc'] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc). Затем цикл, подобный 'while (! Feof (...))' редко работает так, как ожидалось, поскольку флаг 'EOF' не установлен до тех пор, пока вы не попытаетесь прочитать из-за конца файла. –
Подпись 'main' определенно ** не ** C. – user3386109