本文共 1388 字,大约阅读时间需要 4 分钟。
要明确的几点:
1.以下是不行的
#include"stdio.h"
#include<Windows.h> int main() { char * a=0; scanf("%s",a); printf("%s",a); system("pause"); return 0; }2.char a[100]={0};
char *b[100]={0};
此时a的类型是指向char 的指针(即:char *型),b的类型是指向char * 的指针(即使:char ** 型)
,且他们是常量指针(无法移动和修改)
3.检测字符串数组中是否有某个字符,若有,返回true,否则返回false
算法1:bool find_char(char **strings,char value)
{ char * string=0; while((string=*strings++)!=NULL) { while(*string++!='\0') { if(*string==value) return true; } } return false; }在主函数中:
#include<stdio.h>
#include<ctype.h> #include<string.h> #define MAXROW 100 #define MAXCOL 100 :bool find_char(char **strings,char value); int main1() { char* strings[MAXROW]={0}; char string[MAXCOL]={0}; //char** strings_str=strings; //char * string_str=string; size_t count=0; char a; printf_s("请输入字符串,以0结束\n"); scanf("%s",string); while (string[0]!='0') { strings[count++]=string; scanf("%s",string); } strings[count]=NULL; /*strings[0]="sunxiaowu"; strings[1]="xiamuyourenzhang"; strings[2]="wokanzheni";*/ //printf("为啥子下面一句话输入不进去"); bool flag=find_char(strings,'e'); (flag==true)?printf("exist"):printf("not exist"); return 0; } 结果有错:经过调试发现,字符串数组中存储的字符串里,字符串都是一样的?为什么?
经过本人的不断查看,终于发现问题之处在于:
strings[count++]=string;这句
设置一个临时变量即可:
改为:char * tmp=new char(strlen(string)+1);
strcpy(tmp,string);
strings[count++]=string;即可
或者直接初始化来测试:
char * strings[100]={"sunxiaowu","wokanzheni","niquekanzhefngjming"};
算法2:
转载地址:http://ujumi.baihongyu.com/