קבלת warning C4305: '=' : truncation from 'int' to 'char'

קבלת warning C4305: '=' : truncation from 'int' to 'char'

כאשר אני מקמפל ב-visual studio 2012 קוד שיש בו שימוש בפונקציה המצ"ב, אני מקבל את הודעת האזהרה הנ"ל. מדוע? איך מתקנים את זה?
קוד:
void removeChar(char str[], char ch) 
{
	int i,j = 0;
	for (i = 0; str[i] != '/0'; i++)
	{
		if (str[i] != ch)
		{
			str[j] = str[i];
			j++;
		}
	}
	str[j]='/0';
}

נראה שיש בעיה עם
קוד:
	str[j]='/0';
 
אוי...תודה לך..ושאלה נוספת הקשורה במחרוזת:

עליי לקלוט מחרוזת באמצעות שימוש בפונקציה הבאה:
קוד:
char* input_long()
{
	char tempstr[80], *longnum;

	printf("enter long number\n");
	gets(tempstr);
	longnum=(char*)malloc((strlen(tempstr)+1)*sizeof(char));
	strcpy(longnum,tempstr);

	return longnum;
}

אלא שדומני שהקליטה לא מצליחה לי...ברור לי שבמקרה זה צריך לקלוט את מחרוזת על ידי השורה הבאה (למשל) :
char *str=input_long()


מה דעתכם?
 

BravoMan

Active member
דומני שקיבלת רושים שיש לנו פה כוחות טלפתיים


מה זאת אומרת "הקליטה לא מצליחה לי"?
מה קורה כשאתה מריץ את הקוד?
איזה קלט אתה מכניס? מה הפלט שאתה מקבל?
 
בעצם אני מעוניין לפתוח שוב את הפוסט הזה, עדיין יש בעיה:

כאמור בקוד שכתבתי עם הפונקציה הנ"ל יש בעיה, משום שבעת ההרצה משום מה לא ניתנת לי אפשרות להקליד בכלל את המחרוזת שאני רוצה להכניס כקלט (משהו מדלג על האפשרות הזאת, אני מניח...).
לעומת זאת, כאשר אני מוסיף ( )flushall לפני הקריאה לפונקציה, הבעיה מסתדרת.
מדוע?
 

BravoMan

Active member
הנה ניחוש, היות ואני עדיין לא מצליח לפרוץ למחשב שלך ולראות

את הקוד שכתבת:
&nbsp
עשית קלט אחר לפני הקריאה לפונקציה הזו, נכון?
בטח עם scanf?
&nbsp
scanf משאיר את ה-Enter, שגם הוא תו, בבאפר הקלט. היא לא "אוכלת" אותו.
אז הפונקציה הבאה שתקרא לה לעשות קלט, תקבל את ה-Enter הזה.
&nbsp
מה שיראה לך כדילוג.
&nbsp
הפונקציה flushall מנקה את הבאפרים, ומעיפה כל קלט שלא "נאכל" - לא עבר עיבוד ע"י התוכנה שלך.
זה נכון להשתמש בה כפי שאתה מתאר, אבל אם אסור לכם בתרגיל, השתמש ב-getchar במקום, היא "תאכל" את ה-Enter.
 

BravoMan

Active member
הגיוני... הרי אמרתי לך שזה רק ניחוש...

תבין, אם אתה רוצה שאנשים בפורום יצליחו לעזור לך, אתה צריך למסור את כל המידע הרלוונטי:
&nbsp
1. איזה קוד אתה מריץ
2. איזה קלט אתה מכניס
3. איזה פלט אתה מקבל (או היכן אתה לא מקבל פלט).
 
למעלה