پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
باسلام.
;کد شما به نظر نباید درست کار کنه، چون اول آوردید یک رشته تعریف کردید به نام str و بعد با استفاده ازgetchar اومدید یک کاراکتر دریافت کردید و در متغیر دیتا که تعریف نشده ریختید!
تا اینجای کار چند تا اشکال وجود داره:اولا متغیر بهتره داخل سوپرلوپ تعریف نشه دوما با استفاده از getchar میشه فقط یک کاراکتر دریافت کرد همچنین این سری توابه به دلیل مشکلات بافر اورفلو به کل غیراستاندارد هستن و به جای اونها باید از fgets یا fputs استفاده کرد.سوما کاراکتر دریافتی در str ذخیره نشده.
در بخش sscanf شما فرمت رو به کل اشتباه نوشتید و %c به معای کاراکتر هست و فرمت باید به این شکل میبود:
فرمت %s به معنای رشته هست و ستاره قرار گرفته در پشت اون یعنی اون رشته رو نادیده بگیر.برای g بعد عدد داخل دیتای شما میشه از %*c استفاده کرد.
نوشته اصلی توسط flightsazan
نمایش پست ها
باسلام.
;کد شما به نظر نباید درست کار کنه، چون اول آوردید یک رشته تعریف کردید به نام str و بعد با استفاده ازgetchar اومدید یک کاراکتر دریافت کردید و در متغیر دیتا که تعریف نشده ریختید!
تا اینجای کار چند تا اشکال وجود داره:اولا متغیر بهتره داخل سوپرلوپ تعریف نشه دوما با استفاده از getchar میشه فقط یک کاراکتر دریافت کرد همچنین این سری توابه به دلیل مشکلات بافر اورفلو به کل غیراستاندارد هستن و به جای اونها باید از fgets یا fputs استفاده کرد.سوما کاراکتر دریافتی در str ذخیره نشده.
در بخش sscanf شما فرمت رو به کل اشتباه نوشتید و %c به معای کاراکتر هست و فرمت باید به این شکل میبود:
sscanf(str,"%*s%f%*s",&data)
دیدگاه