本文介绍了使用指针在函数中传递数组字符串时如何访问值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 #include < stdio.h > #include < string.h > void frequency_ptr( char * str); int main() { char strings [ 30 ]; printf( 输入字符串:); 得到(字符串); frequency_ptr(& strings [ 0 ]); } void frequency_ptr( char * strings) { int i = 0 ; static int cnt [ 26 ]; while (* strings [i]!= ' \ 0') { if (* strings [i]> = ' a'&& * strings [i]< = ' z') cnt [* strings [i] - ' 一个] ++; i ++; } for (i = 0 ; i< 26; i ++) printf( \ n%c出现%d次:,' a' + i,cnt [i]); } 我的尝试: 以下程序适用于我。但为什么我在上面的while循环中遇到错误。 while (strings [i]!= ' \ 0') { if (strings [i ]> = ' a'&& strings [i]< = ' z') cnt [strings [i] - ' a'] ++; i ++; } 提前致谢。解决方案 不要使用获取,而是使用 fgets 。尝试: #include < stdio.h > void frequency_ptr( const char * str ); #define SIZE 30 #define LETTERS 26 int main() { char string [尺寸]; printf( 输入字符串:); fgets(字符串, sizeof (字符串),stdin); frequency_ptr(string); return 0 ; } void frequency_ptr( const char * str) { unsigned int cnt [LETTERS] = { 0 }; while (* str!= ' \\ \\ 0') { if (* str> = ' a'&& * str< = ' z') cnt [* str- ' a'] + +; ++ str; } size_t i; for (i = 0 ; i< LETTERS; i ++) printf( %c出现%d次。\ n,( char )(' a' + i),cnt [i]); } #include<stdio.h>#include<string.h>void frequency_ptr(char *str);int main(){ char strings[30]; printf("Enter a string:"); gets(strings); frequency_ptr(&strings[0]);}void frequency_ptr(char *strings){ int i=0; static int cnt[26]; while(*strings[i]!='\0') { if(*strings[i]>='a' && *strings[i]<='z') cnt[*strings[i]-'a']++; i++; } for(i=0;i<26;i++) printf("\n%c occurs %d times:", 'a'+i, cnt[i]);}What I have tried:The below program works fine for me. But why am i getting error in the above while loop. while(strings[i]!='\0') { if(strings[i]>='a' && strings[i]<='z') cnt[strings[i]-'a']++; i++; }Thanks in advance. 解决方案 这篇关于使用指针在函数中传递数组字符串时如何访问值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-31 05:16