Считывание Из Файла

Тема в разделе "C/C++/C#", создана пользователем Hirulez, 24 ноя 2011.

  1. Hirulez

    Hirulez Гость

    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int num_input(double array[],int n,char* fname,int* flag)
    {
    char line[1024], *arr[n], *part, *ch;
    int k,i=0;
    FILE *test=fopen(fname,"r+");
    if (strlen(fname))
    {
    if (!test)
    {
    *flag=1;
    return (0);
    }
    }
    for (k=0;k<n;k++)
    {
    if (strlen(fname))
    {
    if (feof(test)) break;
    fgets(line, 1024, test);
    }
    else
    {
    fgets(line, 1024, stdin);
    }

    part = strtok (line," ");
    while (part != NULL)
    {

    arr[i] = calloc (strlen(part)+1, sizeof(char));
    strcpy(arr[i],part);
    part = strtok (NULL, " ");
    i++;
    }
    }
    n=i;
    for (i=0;i<n;i++){
    printf("%s\n", arr[i]);
    }

    *flag=0;
    if (strlen(fname))
    {
    if(fclose(test)) *flag=3;
    }
    return (0);
    }

    int main(){
    double mass[10];
    int i,x,k;
    num_input(mass,10,"data.txt",&k);
    if (k==1) printf("File data.txt does not exist. \n");
    if (k==2) printf("Out of memory. \n");
    if (k==0){
    printf("Start program \n");
    printf("Data from file data.txt: \n");
    for (i=0;i<=9;i++ ){
    printf("%f\n",mass[i]);

    }
    printf("flag = %d\n",k);
    printf("End program. \n");
    }
    return 0;
    }
    Задание. Есть файл в нем текстовые данные, надо каждое слово считать в массив.
    Пример исходных данных:
    1 2 3
    4
    5

    должен получиться массив:
    1
    2
    3
    4
    5

    а у меня получается
    1
    2
    3

    4

    5
    т.е. пустые элементы, хотел убрать их НО!!! при сравнении это получается не пробел, не \n, не NULL.. пытался с помощью функции isspace тоже не дает она истинное значение..


    P.S. надо вообщем как то убрать эти пустые места, ни прибегая к кардинальному изменению программы. т.е. только само считывание изменить, или как то дописать чтобы убрать эти места. надеюсь на вашу помощь. язык С т.е. просто С =)
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Вот тебе простой пример:
    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>

    void main ()
    {
    FILE *  fp;
    char    tmp[256];

    fp = fopen( "z.txt", "rb" );

    while ( fscanf( fp, "%s", tmp ) != EOF ) {
    printf( "\'%s\'\n", tmp );
    }

    fclose( fp );
    }
     
  3. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Кроме \n есть ещё символ \r, который используется в Win-формате при переносе строк.
     
Загрузка...

Поделиться этой страницей