نمایش نتایج 1 تا 13 از 13

نام تاپیک: خواندن کلمه به کلمه یک رشته در یک فایل نوشتاری

  1. #1

    خواندن کلمه به کلمه یک رشته در یک فایل نوشتاری

    سلام

    من می خوام محتوای یک فایل text رو بخونم که حاوی یک رشته هست .
    حالا می خوام تعداد تکرار هر کدوم از کلمات این رشته رو پیدا کنم .
    نمی دونم چه کدی بنوسیسم یا چه جور کلمه به کلمه محتوای فایل رو بخونم .

    می شه لطفاً راهنمایی کنید ؟

  2. #2
    کاربر دائمی آواتار ICEMAN
    تاریخ عضویت
    تیر 1383
    محل زندگی
    Hyper-V
    پست
    476
    سلام ...
    برای خوندنن فایل که فکر نمی کنم مشکلی داشته باشی پس تا اینجا یه رشته داریم
    می تونی این رشته رو کاراکتر به کاراکتر بخونی تا '\32' که کد space باشه (به فرض اینکه کلمه ها با SPACE از هم جدا شده باشه)
    تا اینجا یه کلمه رو خوندی برای اینکه کلمه های بعدی رو بخونه شمارنده رو + 1 کن که از SPACE رد بشه و دوباره کاراکتر ها رو بخون

    موفق باشی

  3. #3
    ممنون از جوابتون من این کد رو نوشتم به نظر شما درسته؟
    تعریف آرایه ای از رشته ها و استفاده از دستور سفقفخن رو درست انجام دادم؟

    char * Str;Char *p_arr[] I=0; fseek (InFile, 0 , SEEK_END); lSize = ftell (InFile); rewind (InFile); fread (buffer,1,lSize,pFile); Str = strtok (str," "); while (Str!= NULL) { p_arr[i]= Str; Str = strtok (NULL, " "); i++; }

  4. #4
    نمی دونم پرا فونتش ریخت بهم .
    char * Str;
    char *p_arr[];
    fseek (InFile, 0 , SEEK_END); lSize = ftell (InFile); rewind (InFile); fread (buffer,1,lSize,pFile); Str = strtok (str," "); while (Str!= NULL) { p_arr[i]= Str; Str = strtok (NULL, " "); }
    )

  5. #5
    کاربر دائمی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    1,486
    برای خوندن کلمه به کلمه فایل نیازی به چک کردن space و این چیزا نیست.
    به این شکل بنویس:

    #include <iostream.h>
    #include <fstream.h>

    void main()
    {
    ifstream in("test.txt",ios::in);
    char s[20];
    while(!in.eof())
    {
    in>>s;
    cout<<s<<endl;
    }
    }
    عملگر << خودش تا space جریان ورودی رو میخونه.
    شما کدت رو توی تگ کد قرار بده تا اینجوری بهم نریزه.

  6. #6
    این کد من درست هست؟ تعریف آرایه من درسته؟

    می خوام کلمات فایل رو داخا آرایه ذخیره کنه
    #include <iostream.h>#include <fstream.h>void main(){char *p_arr[]; int i=; ifstream in("test.txt",ios::in); char s[20]; while(!in.eof()) { in>>s;p_arr[i]=s; i++; }

  7. #7
    کاربر دائمی
    تاریخ عضویت
    دی 1382
    محل زندگی
    پشت كامپيوتر
    پست
    381
    با عرض سلام


    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_LENGTH 256
    main(int argc, char *argv[])

    {
    char inword[MAX_LENGTH];
    int word_count = 0;
    FILE *infile;
    if (argc < 2)

    {
    printf("Format : wordcnt <filename>\n");
    exit( 1 );
    }
    /* open the infile */
    if ((infile = fopen( argv[1], "rt" )) == NULL)

    {
    printf("Cannot open input file - %s\n", argv[1] );
    exit( 1 );
    }
    /* read the string and count it while not end of file */
    while( !feof(infile) )

    {
    fscanf( infile, "%s", inword );
    word_count++;
    }

    /* print the result */
    printf( "There are %d word(s) in the file %s\n", word_count, argv[1] );
    /* close the infile */
    fclose(infile);
    return(0);
    }

    به یاد جونی
    فقط به exe باید مسیر فایل بدی، یا بجای *argv یه مسیر فایل تعریف کن

  8. #8
    ببخشید که باز سوال می پرسم.

    اگه بخوام تک تک کلمه ها رو در یک آرایه ذخیره کنم یعنی هر کلمه در یک خونه از آرایه . می شه راهنمایی کنید چه کدی بنویسم ؟ چون نیاز دارم که تعداد تکرار هر کلمه از آرایه رو بدست بیاورم .

  9. #9
    کاربر دائمی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    1,486
    اگه بخوام تک تک کلمه ها رو در یک آرایه ذخیره کنم یعنی هر کلمه در یک خونه از آرایه . می شه راهنمایی کنید چه کدی بنویسم ؟ چون نیاز دارم که تعداد تکرار هر کلمه از آرایه رو بدست بیاورم .
    همون کدی که توی 2 تا پست قبلیت نوشتی درسته تقریبا فقط اینجوری بنویس:

    #include <iostream.h>
    #include <fstream.h>
    void main()
    {
    char *p_arr[10];
    int i=0;
    ifstream in("test.txt",ios::in);
    char *s;
    while(!in.eof())
    {
    s=new char [20];
    in>>s;
    p_arr[i]=s;
    i++;
    }
    }
    یعنی اشاره گر s رو داخل حلقه تخصیص حافظه کن. و برای آرایه p_arr هم حتما باید طول در نظر بگیری.

  10. #10
    سلام به همگی

    وقتی دستور
     while( !feof(infile) )


    برای رسیدن به انتهای فایل رو می نویسم برنامه ام هنگ می کنه . چی کار کنم برای این شرط؟

    می شه بگم تا مادامی که آخرین کاراکتر فایل enter هست برو از فایلت بخون؟

    inter رو چه جور معرفی کنم؟

    نمی دونم چرا دستور بالا موجب هنگ کردن برنامم می شه .

  11. #11
    کاربر دائمی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    1,486
    می شه بگم تا مادامی که آخرین کاراکتر فایل enter هست برو از فایلت بخون؟
    اینجوری نمیشه درست برنامه رو نوشت چون ممکنه وسط متن یه جایی enter خورده باشه ولی انتهای فایل نباشه. شما برنامت رو بزار تا شاید بشه فهمید که مشکلش چیه یا اگه برنامت طولانیه یه مثالی کوچیکی در مورد همین هنگ کردن بزار.

  12. #12
    دوست عزیز این کارو بکن توی یه حلقه بینهایت با همون دستوری که دوستمون نوشتن کلمه ها رو بخون و دستور زیر باعث میشه وقتی فایلت تموم شد از حلقه میاد بیرون.
    در ضمن برای اینکه تعداد هر کلمه رو بشماری هم چند تا راه داری بهتره تخصیص پویا باشه.

    if (fin.fail())
    break;

  13. #13
    کاربر دائمی آواتار jalil_m
    تاریخ عضویت
    آذر 1386
    محل زندگی
    تهران
    پست
    138

    نقل قول: خواندن کلمه به کلمه یک رشته در یک فایل نوشتاری

    نقل قول نوشته شده توسط shiva_h مشاهده تاپیک
    ببخشید که باز سوال می پرسم.

    اگه بخوام تک تک کلمه ها رو در یک آرایه ذخیره کنم یعنی هر کلمه در یک خونه از آرایه . می شه راهنمایی کنید چه کدی بنویسم ؟ چون نیاز دارم که تعداد تکرار هر کلمه از آرایه رو بدست بیاورم .

    دوست عزيز ، براي اينكار راحت تره كه از تابع strtok استفاده كني كه تو هدرفايل string.h هست و بر اساس يه كاراكتر (كه اينجا Space) هست رشته را به چند تكه تقسيم ميكنه و يه آرايه از كلمات برميگردونه.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •