Daxil olan məktubun sətirdən necə çıxarılsın?

Doğru bir həll tapa bilmirəm. Problemdir.

char availableLetters[ ]="abcdefghijklmnopqrstuvwxyz"; bir char availableLetters[ ]="abcdefghijklmnopqrstuvwxyz"; simli char availableLetters[ ]="abcdefghijklmnopqrstuvwxyz"; və bir daha char lettersGuessed[ ]; İstifadəçi mənə elektron məktub verir, bu məktubda "Qoşulu" simvolu təyin olunacaq və sonra əlçatan simvoldan silinir.

Bu Hangman oyun kodunun bir hissəsidir.

-20
24 марта '15 в 15:58 2015-03-24 15:58 24 Mart 'da Bobrys tərəfindən təyin , '15 at 15:58 2015-03-24 15:58
@ 4 cavab
  char word[] = "abcdef"; int index = 2; //index of letter to be deleted memmove(  + 1], strlen(word) - 1); //1 in the third argument is the number of characters you wish to remove 

Əvvəllər: "abcdef"

Sonra: "abdef"

Hər halda, silmək istədiyiniz məktubun indeksini ala bilsəniz, işiniz tamamlanır!

memmove haqqında daha ətraflı məlumat üçün linkə baxın!

http://www.tutorialspoint.com/c_standard_library/c_function_memmove.htm

Ümid edirəm ki, bu kömək edir! hooray

1
14 авг. cavab cari 14 sentyabrda verilir . 2015-08-14 21:26 '15 'da saat 21:26' de, 2015-08-14 21:26
 #include <stdio.h> #include <string.h> void remCharacter( char * str, char character ); int main() { char myString[] = "any string"; removeChar( myString, 'y' ); printf( "Updated string: %s\n", myString ); getchar(); return 0; } void remCharacter( char * str, char character ) { for( unsigned int i = 0; i < strlen( string ); i++ ) if( string[i] == letter ) strcpy( string + i, string + i + 1 ); } 

conio.hgetch() istifadə conio.h

border=0

Ümid edirəm ki, sizin üçün faydalı olacaq

-1
24 марта '15 в 16:17 2015-03-24 16:17 cavab MeshBoy tərəfindən 24 Mart 2015 tarixində saat 16:17 'da verilir

Bunun necə ediləcəyini göstərir.

 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> char * remove_letter( char *s, char c ) { char *p = strchr( s, c ); if ( p != NULL  *p != '\0' ) { do { *p = *( p + 1 ); } while ( *p++ ); } return s; } int main(void) { char availableLetters[ ] = "abcdefghijklmnopqrstuvwxyz"; size_t n = sizeof( availableLetters ) - 1; srand( ( unsigned int )time( NULL ) ); for ( size_t i = 0; i < n; i++ ) { char c = availableLetters[rand() % ( n - i )]; printf( "removed character : %c, result string: \"%s\"\n", c, remove_letter( availableLetters, c ) ); } return 0; } 

Çıxın

 removed character : y, result string: "abcdefghijklmnopqrstuvwxz" removed character : s, result string: "abcdefghijklmnopqrtuvwxz" removed character : j, result string: "abcdefghiklmnopqrtuvwxz" removed character : b, result string: "acdefghiklmnopqrtuvwxz" removed character : c, result string: "adefghiklmnopqrtuvwxz" removed character : r, result string: "adefghiklmnopqtuvwxz" removed character : w, result string: "adefghiklmnopqtuvxz" removed character : f, result string: "adeghiklmnopqtuvxz" removed character : o, result string: "adeghiklmnpqtuvxz" removed character : g, result string: "adehiklmnpqtuvxz" removed character : m, result string: "adehiklnpqtuvxz" removed character : i, result string: "adehklnpqtuvxz" removed character : d, result string: "aehklnpqtuvxz" removed character : e, result string: "ahklnpqtuvxz" removed character : l, result string: "ahknpqtuvxz" removed character : x, result string: "ahknpqtuvz" removed character : h, result string: "aknpqtuvz" removed character : k, result string: "anpqtuvz" removed character : u, result string: "anpqtvz" removed character : v, result string: "anpqtz" removed character : a, result string: "npqtz" removed character : t, result string: "npqz" removed character : p, result string: "nqz" removed character : n, result string: "qz" removed character : q, result string: "z" removed character : z, result string: "" 

Qeyd etmək lazımdır ki, "z" hərfi silinən sonuncu idi. :) Lakin proqramı bir neçə dəfə çalıştırırsanız, o zaman "z" hərfinin silinməsinin sonuncu olması vacib deyil. :)

-2
24 марта '15 в 16:23 2015-03-24 16:23 Cavab Vlad-dən Moskvaya 24 Mart 'da 16:23' də verilir. 2015-03-24 16:23

Metod 1

Əgər xarakter dizisindən char var istəyirsənsə,

  void remove(char var,char *s) { int i; for(i=0;i<=strlen(s)-1  s[i]!=var;i++) ; int k=i; for(i++;i<=strlen(s)-1;s[k++]=s[i++]) ; s[k]='\0'; } 

Metod 2

Yalnız int A[26] serialını götürün. Başlanğıcda, bütün elementlər 1-ə bərabərdir. İndi istifadəçi girişi verdikdə, sıfır arrayda müvafiq giriş yazılsın.

 for(int i=0;i<20;i++) A[i]=0;// initialization char c; scanf("%c", A[c-'a']=0; // This character can't be used //insert c in guessedstring; 

Odur. Bunun üçün simli yaratmaq lazım deyil.

-2
24 марта '15 в 16:03 2015-03-24 16:03 coderredoc tərəfindən verilmiş cavab 24 mart '16' da 16:03 'da

etiketlə bağlı suallar və ya sual