עבור לתוכן

העתקת מחרוזת ב-C

Featured Replies

פורסם

אהלן! איך אני מעתיק תוכן של מחרוזת אחת לשנייה ללא הרווחים?

האם strncpy יכולה לעשות את זה?

תודה מראש לעוזרים :)

פורסם

for( ; *source; source++ )
{
if( *source != ' ' )
{
*(target++) = *source;
}
}
*target = NULL;

משהו כזה? ::)

פורסם
  • מחבר

השתמשתי בפתרון קצת שונה בסופו של דבר.

תודה בכל אופן :)

פורסם

תשתף בפתרון.

פורסם
  • מחבר

טוב - קצת רקע קודם - אני צריך לקבוע אם מחרוזת מסוימת היא פלינדרום או לא. צריך להעתיק את המחרוזת למחרוזת חדשה, ללא הרווחים ו-non case sensitive, ולבצע את הבדיקה על המחרוזת החדשה.

הבעיה היא שחלק מהפלינדרומים הוא מזהה וחלק לא (נוספים סימנים בסוף השורה), ואני לא מצליח לעלות על הטעות... :-\

הנה הקוד של התוכנית:

//Prog checks if input is palindrome

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{
char string[80], pal_chk[80];
int length, i=0, k=0;
printf("Enter a string: ");
gets (string);

//copies string without spaces and converts to lower-case
while (string[i] != NULL){
if (string[i]>='a' && string[i]<='z'){
pal_chk[k] = string[i];
i++;
k++;
}
else if (string[i]>='A' && string[i]<='Z'){
pal_chk[k] = string[i]+32;
i++;
k++;
}
else
i++;
}

length=strlen(pal_chk);
printf("%d\n", length);
for(i=0; pal_chk[i]!=NULL; i++)
printf("%c", pal_chk[i]);

for (i=0; i<=length/2; i++)
if (pal_chk[i] != pal_chk[length-i-1])
{
printf("\nThis is not a palindrome :-(\n");
system("pause");
return 0;
}
//if we got this far - it's a palindrome
printf("\nThis is a palindrome :-)\n");

system("pause");
return 0;
}

אם מישהו רואה את הטעות ויכול להאיר את עיני, זה מאד יעזור לי

דוגמא לפלינדרום שמצא: Dennis and Edna sinned.

דוגמא לפלינדרום שלא מצא: step on no pets

פורסם

לא נראה לי שאתה מעתיק את ה- null בסוף המחרוזת. זה לבד יכול לגרום לך המון בלאגנים.

בנוסף - נראה לי שמספיק לך לבדוק עד length-1)/2) אבל זה לא אמור לשנות את התוצאה.

פורסם

//Prog checks if input is palindrome

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main(void)

{

char string[80], pal_chk[80];

int length, i=0, k=0;

printf("Enter a string: ");

gets (string);

//copies string without spaces and converts to lower-case

while (string != NULL){

if (string>='a' && string<='z'){

pal_chk[k] = string;

i++;

k++;

}

else if (string>='A' && string<='Z'){

pal_chk[k] = string+32;

i++;

k++;

}

else

i++;

}

pal_chk[k] = NULL;

length=strlen(pal_chk);

printf("%d\n", length);

for(i=0; pal_chk!=NULL; i++)

printf("%c", pal_chk);

for (i=0; i<=length/2; i++)

if (pal_chk != pal_chk[length-i-1])

{

printf("\nThis is not a palindrome :-(\n");

system("pause");

return 0;

}

//if we got this far - it's a palindrome

printf("\nThis is a palindrome :-)\n");

system("pause");

return 0;

}

פורסם
  • מחבר

אויש, איזה דפוק אני :kopfpatsch:

המון המון תודה לשניכם - מחר אני אשחט לכבודכם כבש!

:jump:

פורסם
המון המון תודה לשניכם - מחר אני אשחט לכבודכם כבש!

רומא, הא?

פורסם
  • מחבר

רומא, הא?

האמת שלא... (יש לי yes)

לא רשמתי את זה מסיבה מיוחדת - סתם רציתי להביע הערכה ;D

פורסם

ואללה, אז אפשר צלע?

פורסם
  • מחבר

ואללה, אז אפשר צלע?

חכה רגע, אני אקמפל לך אחת (בשביל להשאר בנושא המקורי):


#include<stdio.h>
#include<food.h>

int main(void)
{
printf("BIG RIB");
return 0;
}

פורסם

:spam:

התוכנית לא עוברת אצלי קומפילציה. המהדר צועק שהוא לא מזהה את "food.h". :nixweiss:

Dym,

הנושא כבר נענה ונסגר, למה להמשיך לטחון? אם אתה רוצה להישאר בנושא, אז אתה יכול לשכתב את הקוד לפונקציות נפרדות שעובדות עם מצביעים. מלבד זאת, אין טעם להמשיך את הת'רד.

פורסם
  • מחבר

:spam:

התוכנית לא עוברת אצלי קומפילציה. המהדר צועק שהוא לא מזהה את "food.h". :nixweiss:

Dym,

הנושא כבר נענה ונסגר, למה להמשיך לטחון? אם אתה רוצה להישאר בנושא, אז אתה יכול לשכתב את הקוד לפונקציות נפרדות שעובדות עם מצביעים. מלבד זאת, אין טעם להמשיך את הת'רד.

צודק - אין טעם. סתם לא רציתי להשאיר את הבן-אדם רעב... ;)

ארכיון

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

דיונים חדשים