עבור לתוכן

בעיה בקוד קצר שכתבתי (בשפת C)

Featured Replies

פורסם


#include <conio.h>
#include <string.h>

int nocis(char,char);

void main(){
char str[10],c;
int num;
gets(str);
scanf("%c",c);
num=nocis((char)str,c);


}

int nocis(char str[10],char c){
char *p;
int counter=0;
p=strchr(str,c);
if(p!=NULL){
counter+=1;
nocis(*p,c);
}
return counter;
}
#include <stdio.h>

אלו הן הבעיות:

Cpp1.obj : error LNK2001: unresolved external symbol "void __cdecl nocis(char,char)" (?nocis@@YAXDD@Z)

Debug/Cpp1.exe : fatal error LNK1120: 1 unresolved externals

Error executing link.exe.

עזרה בבקשה

פורסם

ההצהרה שונה מהמימוש.

אתה צריך להצהיר שאתה מקבל מערך בפרמטר הראשון(וגם לשלוח מערך, כלומר, לא לבצע את ההמרה לCHAR בMAIN).

פורסם
  • מחבר

וואלה!

רק שעכשיו הוא עושה בעיה אחרת

error C2664: 'nocis' : cannot convert parameter 1 from 'char' to 'char []'

Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

Error executing

בשורה

nocis(*p,c);

פורסם

p הוא מסוג char[], ולכן *p הוא מסוג char.

אתה צריך להעביר ל-nocis משתנה מטיפוס char[].

פורסם
  • מחבר

אז כמו שאני מבין התוכנית שלי שווה זבל ובצורה הזאת היא לא תעבוד (התוכנית מקבל תו ומחרוזת וסופרת את מס' הפעמים שהתו מופיעה במחרוזת)?

פורסם

וכדי שהיא תעבוד אתה צריך לשנות אותה קצת.

ושים לה לערך ההחזרה כאשר P הוא לא נאל.

פורסם
  • מחבר

עם הבעיה (קוד) הקודמת איך שהוא היסדרתי עכשיו יש לי בעיה בקוד אחר

תמיד כשאני עובד עם הפונקציות של המחרוזות(שירשור, העתקה, מציאת תו ראשון וכו'..) יש לי אותו בעיה

cannot convert parameter (מספר - אחד או שתיים) from 'char' to 'const char *'

פורסם

כי אתה מעביר לפונקציה פרמטר מטיפוס char במקום char*.

פורסם
  • מחבר

כן את זה הבנתי...אני יודע לקרוא באנגלית

בוא אני יסביר מה אני עושה - אני לוקח איבר ממערך תווית(מחרוזת) ושם אותו שם בצורה כזאת

strcpy(str1,str2[ i ])

אם אני לא יכול בצורה כזת להעביר את התו למחרוזת אז איך אני כן יכול?

פורסם

מה לעשות, כל הפונקציות האלה מטפלות במחרוזות.

אם אתה רוצה להעתיק char לתוך מחרוזת, פשוט תעשה את זה ידנית:

str1[0] = str2[i];
str1[1] = '\0';

אופציה נוספת היא להשתמש ב-sprintf, כלומר:

sprintf(str1, "%c", str2[i])

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים