Проблема при запуске моей программы
Привет всем!Я должен запустить программу, которая считывает строку от пользователя и печатает обратную строку, символ с наибольшей частотой и символ с меньшей частотой frequences.So, я сделал две функции, но у меня есть проблема, когда я запускаю свой код.Моя программа печатает строку в обратном порядке и после этого выходит из строя.Можете ли вы помочь мне найти мою ошибку?Например, когда мой вход-hello world, мой выход-dlrow olleh, и после этого моя программа выходит из строя и не появляется результат моей другой функции.
Что я уже пробовал:
Вот мой код,
#include <stdio.h> #include <stdlib.h> #include <string.h> void chars(char *s, char *most_seen, char *less_seen) { char *s2=malloc((strlen(s)+1)*sizeof(char)); //create a new string int i,j,count=0,count1=1,count2=0,count3=100; //gets(s1); strcpy(s2,s); //copy the s to s2 to compare the strings //compare the strings to find the character which appear more in the string for(i=0;i<strlen(s);i++) { for(j=0;j<strlen(s);j++) { if(s[i]==s2[j]) count2++; } if(count2>count1) { count1=count2; *most_seen=s[i]; } count2=0; } //compare the strings to find the character which appear less in the string for(i=0;i<strlen(s);i++) { for(j=0;j<strlen(s);j++) { if(s[i]==s2[j]) { count++; } } if(count<count3) { count3=count; *less_seen=s[i]; } count=0; } } char *reverse(char *s) { int l, i; char *begin_ptr, *end_ptr, ch; // Get the length of the string l = strlen(s); begin_ptr = s; end_ptr = s; for (i = 0; i < l - 1; i++) end_ptr++; for (i = 0; i < l / 2; i++) { ch = *end_ptr; *end_ptr = *begin_ptr; *begin_ptr = ch; begin_ptr++; end_ptr--; } } int main() { char *s=malloc(1000*sizeof(char)); char *s2; char mostSeen,lessSeen; fgets(s,1000,stdin); s[strcspn(s,"\n")] = '\0'; chars(s,&mostSeen, &lessSeen); s2 = reverse(s); printf("%s\n",s); printf("%s\n",s2); printf("%c\n%c\n",mostSeen,lessSeen); return 0; }
KarstenK
вы пробовали использовать отладчик с его представлением памяти?