纯c中char*[]的处理
来源:互联网 发布:如何把mac里的照片导出 编辑:程序博客网 时间:2024/06/07 14:54
要明确的几点:
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:
- 纯c中char*[]的处理
- c 中char * 和 char []的区别
- JAVA中处理ASCII 160 的char
- JAVA中处理ASCII 160 的char
- c中有关char *p 和char a[6] ,char a[] char a[0] 的区别
- C语言中 char * char [] char*[] char**以及指针的理解
- C语言中char * 和 char []的区别
- C语言中char * 和 char []的区别
- C语言中char * 和 char []的区别
- C/C++中char* 与char []定义的区别
- C语言中char * 和 char []的区别
- C语言中char * 和 char []的区别
- JAVA中的char与C语言中char的区别
- C语言中unsigned char* 与char*的区别?
- c语言中 char* 和 unsigned char* 的区别浅析
- c语言中:字符 char的描述
- C/C++中signed char的范围
- 【Linux】纯C环境下字符串的处理
- 【bzoj2330】【scoi2011】【糖果】【差分约束】
- CLRS第十四章思考题
- MAC: cannot use typeid with -fno-rtti
- CLRS 15.1钢条切割
- bzoj 1059: [ZJOI2007]矩阵游戏|二分图匹配|匈牙利算法
- 纯c中char*[]的处理
- CLRS 15.2矩阵链乘法
- CLRS 15.3动态规划原理
- myeclipse中jquery.min.js引入到工程中显示红叉
- CLRS 15.4最长公共子序列
- 【bzoj2697】【特技飞行】【贪心】
- Struts2标签—Iterator标签
- 浅谈JSONP跨域请求
- How to enable virtualization on Thinkpad X1 Carbon with Win10 installed