اطلاعیه

Collapse
No announcement yet.

جداسازی اعداد از متن در C یا c++ برای میکرو AVR

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

  • flightsazan
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    این اضافه کردم ولی خطا همچنان باقی است ممنون
    unsigned char Buffer;

    یک دیدگاه بنویسید:


  • hossein.m98
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    نوشته اصلی توسط flightsazan نمایش پست ها
    تو کد ویژن با خطا واجه شدم اول باید char Buffer[20] رو اول کد اعلام نمایم
    بعد این کد رو نمیشناسه:sscanf
    ممنون

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    با عرض ادب :
    با پاک کردن و اینکلود مجدد stdio ایراد به sscanf حل شد ولی خطای زیر همچنان باقی است ممنون
    cError: C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\test1.c(93): must declare first in block 

    و روی این خط می ایسته:
    char Buffer[20] = "SS       235.23g";
    احتمال داره از اون ارورهای مسخره کدویژن باشه. فکر کنم باید تعریف متغیر ها رو ابتدای بلوک انجام بدید.

    یک دیدگاه بنویسید:


  • flightsazan
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    تو کد ویژن با خطا واجه شدم اول باید char Buffer[20] رو اول کد اعلام نمایم
    بعد این کد رو نمیشناسه:sscanf
    ممنون

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    با عرض ادب :
    با پاک کردن و اینکلود مجدد stdio ایراد به sscanf حل شد ولی خطای زیر همچنان باقی است ممنون
    cError: C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\test1.c(93): must declare first in block 

    و روی این خط می ایسته:
    char Buffer[20] = "SS       235.23g";
    جدیدترین ویرایش توسط flightsazan; 2021/07/01, 17:46.

    یک دیدگاه بنویسید:


  • flightsazan
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    واو درسته دقت نکردم ممنون
    این و اضافه کردم:
    printf("%.3f\n", Weight);

    حالا ببینم کد ویژن چکاره هست
    جدیدترین ویرایش توسط flightsazan; 2021/07/01, 17:21.

    یک دیدگاه بنویسید:


  • hossein.m98
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    نوشته اصلی توسط flightsazan نمایش پست ها
    اجرا شد ولی خالیه
    قرار هم نبود چیزی نشون بده! این یک نمونس بقیشو باید خودت کامل کنی. این کد نه printf داره نه مکانیزم خروجی دیگه ای.

    یک دیدگاه بنویسید:


  • flightsazan
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    اجرا شد ولی خالیه

    یک دیدگاه بنویسید:


  • hossein.m98
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    نوشته اصلی توسط flightsazan نمایش پست ها
    نه با ویرگول هم خطا می ده تو result ایستاده
    ویرگولم نباید باشه! هیچی بعدش لازم نیست

    یک دیدگاه بنویسید:


  • flightsazan
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    نه با ویرگول هم خطا می ده تو result ایستاده

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    error: initializer element is not constant|

    یک دیدگاه بنویسید:


  • hossein.m98
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    نوشته اصلی توسط flightsazan نمایش پست ها
    هنوز هم خطا داره
    [FONT=Yekan]||=== Build: Debug in tc13 (compiler: GNU GCC Compiler) ===|[/FONT]C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc13\main.c|11|warning: data definition has no type or storage class|
    C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc13\main.c|11|warning: type defaults to 'int' in declaration of 'result' [-Wimplicit-int]|
    C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc13\main.c|11|error: initializer element is not constant|
    C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc13\main.c|12|error: expected identifier or '(' before 'if'|
    ||=== Build failed: 2 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|


    بعد از if نقطه ویرگول نذاشتید؟؟ نقطه ویرگول نباید باشه ها

    یک دیدگاه بنویسید:


  • flightsazan
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    تا الان کلی داخل و خارج رو کشت زدم ممنون
    البته کد بالا رو تو atml sudio خطای مشابه کد ویژن می ده
    جدیدترین ویرایش توسط flightsazan; 2021/07/01, 17:07.

    یک دیدگاه بنویسید:


  • hossein.m98
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    نوشته اصلی توسط flightsazan نمایش پست ها
    فقط مهندس کد هایی که با کد بلاکس و سی کار می کنند تو کد ویژن نمیشه کامپایل کرد مانند کد دوستمون:
    این عالی کار می کنه ولی تو کد ویژن کامپیل نشد:

    کد:
    [FONT=Yekan]#include <stdio.h>[/FONT]#include <stdlib.h>
    //using namespace std;
    
    
    
    
    
    
    int main(void)
    {
    char *string = "ss   223.34g", *ptr = string;
    while (*ptr) {
        if (isdigit(*ptr) ) {
            float val = strtof(ptr, &ptr);
            if (ceilf(val) == val) {
              printf("%.0f\n", val);
            } else {
              printf("%.3f\n", val);}
    
    
        } else {
            ptr++;
        }
    }
        return 0;
    }
    فکر نمیکنم در جهان مریض تر از کدویژن کمپایلری باشه (اغراق)! خیلی چیزا رو نمیفهمه، استاندارد زبان C اش خیلی قدیمیه و بهینه سازی هم زیاد بلد نیست!
    به نظر من بهتره کار با اتمل استودیو رو شروع کنید که از کمپایلر avr-gcc استفاده میکنه. دوستان WinAVR هم پیشنهاد دادن که اونم از همین کمپایلر استفاده میکنه ولی به نظرم همون اتمل استودیو بهتره. جالبه بدونید همین کد بلاکس هم داره از gcc استفاده میکنه اما gcc ای که برای avr استفاده میشه برای سخت افزار avr پورت شده که توی اسمش هم مشخصه (اینو برای اطلاعات عمومی گفتم).
    فقط توجه داشته باشید همنطوری که گفتم avr سخت افزار ضعیفیه و کمپایلرهاش معمولا به شکل پیش فرض از نوع داده اعشاری توی رشته پشتیبانی نمیکنن که حجم استفاده از حافظه رو کم کنن. اما با سرچ راهی برای فعال کردن این ویژگی میتونید پیدا کنید.

    یک دیدگاه بنویسید:


  • flightsazan
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    فقط مهندس کد هایی که با کد بلاکس و سی کار می کنند تو کد ویژن نمیشه کامپایل کرد مانند کد دوستمون:
    این عالی کار می کنه ولی تو کد ویژن کامپیل نشد:

    کد:
    [FONT=Yekan]#include <stdio.h>[/FONT]#include <stdlib.h>
    //using namespace std;
    
    
    
    
    
    
    int main(void)
    {
    char *string = "ss   223.34g", *ptr = string;
    while (*ptr) {
        if (isdigit(*ptr) ) {
            float val = strtof(ptr, &ptr);
            if (ceilf(val) == val) {
              printf("%.0f\n", val);
            } else {
              printf("%.3f\n", val);}
    
    
        } else {
            ptr++;
        }
    }
        return 0;
    }
    دلیل: ادغام دو پست برای جلوگیری از اسپم

    هنوز هم خطا داره
    [FONT=Yekan]||=== Build: Debug in tc13 (compiler: GNU GCC Compiler) ===|[/FONT]C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc13\main.c|11|warning: data definition has no type or storage class|
    C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc13\main.c|11|warning: type defaults to 'int' in declaration of 'result' [-Wimplicit-int]|
    C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc13\main.c|11|error: initializer element is not constant|
    C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc13\main.c|12|error: expected identifier or '(' before 'if'|
    ||=== Build failed: 2 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|


    یک دیدگاه بنویسید:


  • hossein.m98
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    نوشته اصلی توسط flightsazan نمایش پست ها
    کد:
    [FONT=Yekan]#include <stdio.h>[/FONT]#include <stdlib.h>
    
    
    
    
    int main()
    {
        char Buffer[20] = "SS 0.0g";
        float Weight = 0f;
    int result;
    
    
    
    
    result = sscanf(Buffer, "SS %fg", &Weight);
    if (result == 1);
    {
    
    
      // Success
    }
        return 0;
    }
    آها فهمیدم چی میگه. اون f رو از انتهای خط float Weight = 0f; پاک کنید.

    یک دیدگاه بنویسید:


  • flightsazan
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    کد:
    [FONT=Yekan]#include <stdio.h>[/FONT]#include <stdlib.h>
    
    
    
    
    int main()
    {
        char Buffer[20] = "SS 0.0g";
        float Weight = 0f;
    int result;
    
    
    
    
    result = sscanf(Buffer, "SS %fg", &Weight);
    if (result == 1);
    {
    
    
      // Success
    }
        return 0;
    }

    یک دیدگاه بنویسید:


  • hossein.m98
    replied
    پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR

    نوشته اصلی توسط flightsazan نمایش پست ها
    ممنون از شما مهندس و دوست گرامی اگه بتونم تست کنم:!
    با این خطا موجه شدم ممنون
    ||=== Build: Debug in tc15 (compiler: GNU GCC Compiler) ===|
    C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc15\main.c||In function 'main':|
    C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc15\main.c|8|error: invalid suffix "f" on integer constant|
    C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc15\main.c|18|error: expected declaration or statement at end of input|
    ||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
    تو کد بلاکس و کامپایل C
    میشه کد رو کامل بذارید اینجا؟ حتما از تگ CPP استفاده کنید (توی نوار بالایی ادیتور انجمن).

    یک دیدگاه بنویسید:

لطفا صبر کنید...
X