A. c语言中的字符串
C语言的字符串是一片连续的空间,用'\0'表示字符串的结尾。如果从一个字符指针作为字符串的起始进行访问,当遇到'\0'之前的整段空间的值都会被当做字符串的内容。LZ的程序中只复制的字符串长度等于串长的部分,没有复制'\0'造成访问越界。在VC++中用Debug模式运行程序,自带的Microsoft C&C++ Debugger会把未初始化的栈空间的每个字节填充为0xCC以便查错,而访问到这段空间把连续的0xCCCC当做字符串了,按GBK编码显示为汉字“烫”。
可以改成这样:
#include <stdio.h>
#include<string.h>
int main()
{ char a[80],b[80];
int i,t;
scanf("%s",a);
t=strlen(a);
for(i=0;i<t;i++)
b[i]=a[i];
b[i]='\0';
printf("%s\n",b);
}
====
[原创回答团]
B. C语言 字符串命令 集锦
楼上的写的我都看不懂,不过我可以推荐给你一些:
gets(char *str)
从流中获取字符串
putchar(ch[i])
打印一个字符
strlen(char *str)
判断字符串的长度
char *strcpy(char *destination, const char *source)
拷贝串
char *strcat(char target, const char *source)
将一个串的内容追加到另一个串上
char *strncat(char *destination,const *source,size_t n);
将字符穿追家n个字符。
size_t strxfrm(char *target,char *source,size_t n)
把一个字符穿转移到另一个字符穿
int streql(char *str1, char *str2)
比较两个字符穿是否相同
int strieql(char *str1, char *str2)
不区分大小写比较两个字符串是否相同
char *strlwr(char *str)
char *strupr(char *str)
将字符穿转换为大写或小写
int strcmp(const char *str1,const *char str2)
比较两个字符串
我只能写到这里了,手都酸了,要加分哦,呵呵
我有这方面的电子书,要的话,就加我QQ(474724984)吧
我传给你。
C. c语言 输入一个字符串,输出菱形样式图案,每行包含各子串。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n,i;
char s[100];
scanf("%s",s);
n=strlen(s);
for(i=0;i<n;++i)
s[n+i]=s[n-i-1];
s[n+i]='