שאלה ב-C

maromnn

New member
שאלה ב-C

יש לי String שנקרא STR ובתוכו הצבתי P . עכשיו אני רוצה להוסיף לו משתנה מ-INT. לדוגמא: אם יש לי במשתנה ב int אחד (1) אז אני רוצה שהמחרוזת STR תשתנה ל- "P1". מישהו יודע איך עושים זאת? תודה.
 

maromnn

New member
לא אומר לי הרבה...

אבל תודה בכל מקרה.. מישהו נתן לי את הקוד הבא:
#include <stdio.h> #include <string.h> void main() { char d[25] ,c='1'; scanf("%s",d); strcat(d,&c ); printf("%s\n",d); }​
אך אני לא יודע מה לעשות איתו..
 

HaRmosh

New member
אפשרי, אבל צולע...

פתרון טוב:
#include <stdio.h> #include <string.h> void main() { char d[25]; int a = 854; scanf("%s",d); strcat(d, atoi(a)); }​
כש- atoi מקבלת מספר ומחזירה מחרוזת עם ערך המספר, ו-strcat משרשרת את הפרמטר השמאלי שלה לימני, כלומר במקרה זה בסוף d ישורשר "854", שהיא המחרוזת שהוחזרה מ-atoi.
 

maromnn

New member
תודה רבה.! אבל הוא אומר

שהוא לא מזהה את atoi:
#include <stdio.h> #include <string.h> void main() { char d[25]; int a = 854; scanf("%s",d); strcat(d, atoi(a)); } _______________________________________________ error C2065: 'atoi' : undeclared identifier Error executing cl.exe. main.obj - 1 error(s), 0 warning(s)​
 

maromnn

New member
אוקי ..

ואז יוצא הדבר הזה:
error C2664: 'atoi' : cannot convert parameter 1 from 'int' to 'const char *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast​
:)
 

zagzagzag

New member
כי atoi זו לא הפונקציה שאתה צריך

פירוש השם הוא ascii to int, כלומר המרה ממחרוזת למספר. אתה צריך את ההמרה ההפוכה, itoa, אבל היא לא סטנדרטית. אפשר להשתמש ב-sprintf:
int num; char str[10]; sprintf(str,"%d",num);​
רק תקפיד להיזהר עם גודל המחרוזת (צריכה להיות מספיק גדולה כדי להכיל את המספר), כדי שלא יהיו לך חריגות זיכרון.
 
למעלה