Суть задачи - дан текстовый файл с строками чисел, написанных через пробел (пример входных данных) :
1 -6 8 4 8 ... 8
1 8 6 3 6 ... 1
................................
8 5 2 9 0 ... 5
Эти числа нужно вбить в двумерный целочисленный массив произвольного размера, но возникла проблема - если нужно считать строку не до конца, как осуществить переход на следующую строку и продолжить считывание уже с неё?
C/C++
Переход на следующую строку при считывании данных из файла в Си
Покажи сначала, как у тебя сделано.
А так можно getline-ом читать в переменную string, её анализировать уже, делить(для этого есть готовая функция класса) и т.д..
А так можно getline-ом читать в переменную string, её анализировать уже, делить(для этого есть готовая функция класса) и т.д..
Олег Костин
Та уже разобрался, вбивал данные в массив максимально топорным методом (перебором через 2 for), и fscanf, как оказалось, для перехода на другую строку, нужно было просто добавить *[^\ n] и он начинает считывать с новой строки
Для считывания данных из файла построчно в Си можно использовать функцию fgets. Она считывает символы из файла, пока не встретит символ перехода на следующую строку ('\n'), или пока не будет достигнут конец файла.
Пример кода:
Пример кода:
#include
int main() {
FILE* file = fopen("file.txt", "r");
if (file == NULL) {
printf("Cannot open file\n");
return 1;
}
int rows = 10; // пример размера массива
int cols = 5;
int array[rows][cols];
for (int i = 0; i < rows; i++) {
char line[100]; // достаточно для строки длиной до 99 символов
if (fgets(line, sizeof(line), file) == NULL) {
printf("Error reading file\n");
return 1;
}
// считываем числа из строки по одному
char* num = strtok(line, " "); // разделитель - пробел
int j = 0;
while (num != NULL && j < cols) {
array[i][j] = atoi(num); // преобразуем строку в число
j++;
num = strtok(NULL, " ");
}
}
fclose(file);
// выводим массив для проверки
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
return 0;
}
Этот код считывает данные из файла "file.txt" и сохраняет их в двумерном массиве array размером 10x5. Для считывания каждой строки из файла используется функция fgets, а для преобразования строки в число - функция atoi.Тут цыклы помогут и условия: если не до конца! перейти на новый индекс массива
Похожие вопросы
- Как реализовать поиск похожей строки в базе данных?
- Как считать в виде числа данные из файла, в котором даны восемь байт?
- Создать файл ABONENT.dat, содержащий записи следующей структуры: ФИО абонента; его номер телефона. на языке си++
- Нужно найти в бинарном файле введенные пользователем данные.
- Си заголовочный файл, немного бы пролить свет
- Модули. Коммуникация между двумя .c файлами.(Си)
- Задача на строки в Си
- Нужно не выводить пробел в конце строки. язык си (Андрей, даже ваш вариант сайт считает не рабочим... )
- Помогите написать код на Си, по теме "строки".
- Как записать данные в бинарный файл C++