@ArturFaizullin

Как заполнить массив в си?

#include <stdio.h>  // Для printf
#include <string.h> // Для strtok
#include <locale.h> // Для русского языка
int main (void)
{ 
	setlocale(LC_ALL, "Rus");	//русский язык   
    char str[40];
    char sep [10]=" ";	//сепаратор для разбиения
    int i=-1;
    char *istr;
   
    FILE *myFile;
    myFile = fopen("numbers.txt", "r");
	if (myFile == NULL){
        printf("Error Reading File\n");
        exit (0);
    }   
   fgets (str,sizeof(str),myFile);	// получаем строку зи файла в переменную str

    printf ("Числа из файла: %s\n", sep);
    istr = strtok (str,sep);
    while (istr != NULL)
    {
    	++i;
       printf ("%s\n",istr);
       istr = strtok (NULL,sep);
    }	    
    return 0;
}

Данный код выводит все числа поочередно разделённые в файле пробелом. Как можно добавить запись каждого элемента в массив для вывода первого, второго, предпоследнего и последнего числа ?
  • Вопрос задан
  • 2296 просмотров
Решения вопроса 1
@ArturFaizullin Автор вопроса
Решил задачу так:
#include <stdio.h>  // Для printf
#include <string.h> // Для strtok
#include <locale.h> // Для русского языка
int main (void)
{ 
	setlocale(LC_ALL, "Rus");	//русский язык   
    char str[40];
    char sep [10]=" ";	//как будет разделять числа друг от друга, тут сделано пробелами, но можно и запятой ил идругим символом
    int i=-1;
    char *istr;
    int a[40];
   
    FILE *myFile;	//объявление переменной файла
    myFile = fopen("numbers.txt", "r");	//открытие файла с правами чтения
	if (myFile == NULL){	//если файл отсутствует то ошибка
        printf("Ошика чтения файла\n");
        exit (0);
    }   
   fgets (str,sizeof(str),myFile);	// получаем строку зи файла в переменную str
   printf("Числа в файле: %s\n", str);	// выводим числа
    istr = strtok (str,sep);	//разделение чисел на пробелы
    while (istr != NULL)	//цикл while будет продолжаться до окончания строки
    {
    	++i;	
       a[i]=istr;	// присваивание элементу массива числа
       istr = strtok (NULL,sep);	// следующее число
    }
	printf("Первое число: %s\n",a[0]);
	printf("Второе число: %s\n",a[1]);
	printf("Предпоследнее число: %s\n",a[i-1]);
	printf("Последнее число: %s\n",a[i]);	 
 
    return 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы