Logo

רד-בורד: ארכיון

ראשי > תיכנות > בעיה קטנה ב-C

20/02/2006 19:13:30 Cyber-Knight
איפה פה הבעייה???
קוד:
#include <stdio.h>
#include <windows.h>

void main()
{
char target[50],sComplete[55];
printf("Enter the target IP or Web Site: ");
scanf("%s",&target);
sComplete[55]="ping "+target[50];
while (1 != 0)
{
sprintf(sComplete);
}
}
20/02/2006 21:19:50 Ghost
2 בעיות שאני רואה:
1. הפונקציה scanf מצפה לקבל מצביע למשתנה(כתובת), או במקרה הזה למערך(למחרוזת), במקרה הזה target עצמו מכיל את הכתובת, ולכן כאשר אתה שולח את &target אתה שולח את הכתובת למצביע, בקיצור מה שאתה צריך לעשות זה לשלוח את target בלי ה& בהתחלה.
2. לפי מה שאני מכיר לא ניתן לשרשר מחרוזות בC כמו בVB,JS וכו’, ולכן אתה לא יכול לעשות פשוט
קוד:"ping" + target[50]
אתה צריך לעשות איזה שהוא for שמעביר אות אות.

[ההודעה נערכה על-ידי Ghost ב-20/02/2006 21:22:18]

עוד 2 הערות:
לא ממש הבנתי מה אתה מנסה לעשות בקריאה לפונקציה sprintf לדעתי מה שאתה מתכוון זה לשלוח פקודה לshell (אולי לא הבנתי נכון) לכן כדאי לך להשתמש בפונקציה system.
לגבי הwhile אתה פשוט יכול לעשות while(1) וזה יתן את אותה תוצאה.[ההודעה נערכה על-ידי Ghost ב-20/02/2006 21:24:20]
20/02/2006 21:28:17 Cyber-Knight
system ב-dos.h???
כי לי זה לא עובד...
20/02/2006 22:45:54 Ghost
כן.
20/02/2006 23:15:43 Cyber-Knight
הוא לא נותן לי!!!!!
ואני מישתמש ב- Borland C++ Builder 6.
הוא לא נותך להישתמש ב-system כשאני מכליל את ה-dos.h.
נ"ב---> יש איזה פונקציה של העתקת מחרוזות לא?!
21/02/2006 00:49:59 cp77fk4r
יש לך פונקציה בשם Strcpy, אם אליה אתה מתכוון.
אני מעביר את זה לתיכנות.[ההודעה נערכה על-ידי cp77fk4r ב-21/02/2006 00:50:43]
21/02/2006 14:43:18 porto_jwl
הבעיה היא ש-char לא קולט מספרים,אלא רק תווים.
ויש עוד כמה בעיות אם לא עובד תשאיר פה הודעה.
וגם עוד משהו
שהפקודה הבאה:
sComplete[55]="ping "+target[50];
אינה קיימת,
אם אתה צריך להשתמש בדוס והפונקציה system לא עובדת צור קובץ באט וקרא לו משם.
21/02/2006 15:05:49 Cyber-Knight
אז איך אני מישתמש ב-Strcpy???
האם יש דרך אחרת???

תודה לעוזרים!!!
08/03/2006 13:30:05 luXi
טוב תרשום לי בדיוק מה אתה צריך
דבר ראשון כדי לקלוט משו לתוך מחרוזת משתמשים בפונקציה gets()
ובתוך הסוגריים שם הפונקציה..
הפונקציה strcpy:
נרשמת כך: strcpy(string1,string2)
string2 תועתק לתוך string1 ואני חושב שסטרינג2 גם תימחק אבל אנלא בטוח

עריכה:

בשביל להשתמש בפונקציות הללו תצטרך להשתמש בספרייה string.h[ההודעה נערכה על-ידי luXi ב-08/03/2006 13:31:08]
13/03/2006 02:03:58 ziv
זה ממש שאלה .... של מישהו חדש P:
בכל מקרה C היא לא שפה שיכולה לחבר סתם ככה מחרוזות.
יש strcpy או strncp שבספרייה string.h
ב C++ יש את ה CLASS שנקרא STRING שבעזרתו אפשר לעשות את החיבור של שני המחרוזות בעזרת אופרטור פלוס.

luXi הסטרינג string2 לא תמחק
ואפשר להשתמש כדי לקלוט מחרוזת עם gets או scanf
אגב הייתי כותב את התוכנה בצורה שונה לחלוטין...

קוד:
char yourstring[60]="ping ";
puts(yourstring+strlen[yourstring]); //put the string after the "ping " ...
[ההודעה נערכה על-ידי ziv ב-13/03/2006 02:08:37]
14/03/2006 20:54:37 hashashan
תשתמש בפקודה strstr זו פונקציה שמשרשרת שתי מחרוזות
15/03/2006 10:03:55 prgrmr
ציטוט:תשתמש בפקודה strstr זו פונקציה שמשרשרת שתי מחרוזות

לא בדיוק :\, strstr
מחפשת תת מחרוזת ומחזירה מצביע למחרוזת שנמצאה במחרוזת שבה מחפשים.
בשביל שרשור מחרוזות יש strcat[ההודעה נערכה על-ידי prgrmr ב-15/03/2006 10:08:09]
15/03/2006 19:52:11 hashashan
אההה נכון צודק
שחכתי מזה לגמרי :)
עמודים: 1