C语言,有关于字符和字符串问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 07:13:26
比如我现在输入一串字符asdf给s[4]
那我s[0]=a,s[1]=s,s[2]=d,s[3]=f
这个没问题
现在我要把a和s拿出来付给temp
然后当字符串输出temp
我用strcat想把s[0]和s[1]连接然后付给temp
但是好象我的想法脱离了实际。.....
因该正确的要怎么写?
我的确是没搞清楚.
你能举个例子吗?

我现在是从键盘输入字符串.怎么让他后面会有\0那?

#include<stdio.h>
#include<string.h>
main()
{
char s[50];
char str[50],temp1[50],temp2[50];
char bl[50][50],*p=bl[0];
int i=0,cd,d,j=0;
printf("请输入一串字符:");
scanf("%s",&s);
cd=strlen(s);
while(i<cd)
{
for(i=0;i<cd;i++)
{
if((s[i]>=97) && (s[i]<=122))
{
strcpy(temp1,s[i]);
strcat(temp2,temp1);
strcpy(str,temp2);

}
else if((s[i]>=48) && (s[i]<=57))
{
strcpy(temp1,s[i]);
strcat(temp2,temp1);
strcpy(str,temp2);
}
else
{
continue;
}
d=d+1;
}
cd=cd-d;
strcp

你没弄清字符数组与字符串的关系,一串的字符后面以要加上'\0'才是字符串,所以你即使s[0]=a,s[1]=s,s[2]=d,s[3]=f ,s仍然是个字符数组而不是字符串,所以也就不能用字符串函数操作,除非定义5个元素,在s[4]加上'\0'才能用字符串函数操作
还有用字符串函数操作,参数永远都是字符串变量,而s[0]和s[1]是数组元素

int c[4]={'a','s','d','f'};/*这样只能是字符数组*/
int d[5]={'a','s','d','f','\0'};/*这样既是字符数组,又是一个字符串*/
用gets或者scanf函数以字符串形式输入系统会自动加'\0'的

你的程序的最大问题就是,对数组中一个元素的操作不能够使用字符串函数把一个元素传到一个数组里面只能用数组下标的操作方法

就是根本不能用字符串函数
temp[j]=s[i]; j++;