A
A
ArturFaizullin2019-01-12 10:50:03
C++ / C#
ArturFaizullin, 2019-01-12 10:50:03

How to fill an array in C?

#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;
}

This code prints all the numbers in turn, separated by a space in the file. How can one add an entry of each element to an array to output the first, second, penultimate, and last number?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
ArturFaizullin, 2019-01-12
@ArturFaizullin

Solved the problem like this:

#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;
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question