C语言字符串问题
那-97只不过是一个随机数,我的机子上运行就不是-97,因为如果两个字符串相同,就会接着比较字符串后面的数,直到遇到两个不相等的数为止,最后得到的就是那两个数的差了;
所以必须对比较的个数进行限制,我帮你改聊一下
#include
#include
void main()
{
int i=0,t;
char s1[40];
char s2[40];
printf("请输入一个字符串s1:");
gets(s1);
s1[strlen(s1)]='\0';
printf("请输入一个字符串s2:");
gets(s2);
s2[strlen(s2)]='\0';
for(;i<=40&&s1[i]!=0&&s2[i]!=0;i++)
{
t=s1[i]-s2[i];
if(s1[i]-s2[i]>0)
{
break;
}
if(s1[i]-s2[i]<0)
{
break;
}
}
if(s1[i]!=0||s2!=0)t=s1[i]-s2[i];
printf("差值为%d
",t);
}
#include#includeint main(){ char *x="23"; char ans[5]="x="; strcat(ans,x); printf("%s",ans); //system("pause"); return 0;}这是你要的吧
#include <stdio.h>
main()
{
int s, i;
char t[100];
char c, r;
t[0]='\0';
while(1){
printf("1输入数据
");
if(t[0] != '\0'){
printf("2将数据倒叙
");
printf("3删除指定字符
");
}
printf("4退出
");
fflush(stdin);
c = getchar();
switch(c){
case '1':
printf("请输入字符串:");
fflush(stdin);
for (i = 0; (c = getchar()) != '
'; i++)
t[i] = c;
t[i] = '\0';
break;
case '2':
unchar(t);
break;
case '3':
printf ("请输入要删除的字符");
fflush(stdin);
scanf("%c", &r);
rmchar(t, r);
break;
case '4':
exit(0);
default:
printf("输入错误");
continue;
}
printf("处理后字符串为:%s
", t);
}
}
/* 倒置字符 */
void unchar(char temp[])
{
int i;
int j;
int nu;
char t;
for (nu=0; temp[nu] != '\0'; nu++){
}
for (i = 0, j=nu-1; i<j; i++, j--){
t = temp[i];
temp[i] = temp[j];
temp[j] = t;
}
}
/* 将temp中的t删除 */
void rmchar(char temp[], char t)
{
int i, j;
for (i = 0,j=0; temp[i] != '\0'; i++){
if (temp[i] != t){
temp[j] = temp[i];
++j;
}
}
temp[j]='\0';
}
根据你的题意,修改了一下菜单部分
#include <stdio.h>
#include <string>
/* 倒置字符 */
void unchar(char *temp,int len)
{
char j;
int nu;
int flag = len-1;
for (nu=0; nu<len/2; nu++)
{
j = temp[nu];
temp[nu] = temp[flag];
temp[flag] = j;
flag--;
}
}
/* 将temp中的t删除 */
void rmchar(char *temp, char t)
{
int i, j;
int len;
len = strlen(temp);
for (i = 0; i < len; i++)
{
if (temp[i] == t)
{
for(j=i;j < len;j++)
{
temp[j] = temp[j+1];
}
break;
}
}
}
void main()
{
int i,len;
char *t= new char[1000];
int ch = 0;
int rm = 0;
int un = 0;
char c, r;
while(1)
{
ch=rm=un=0;
printf("1输入数据\n");
printf("2将数据倒叙\n");
printf("3删除制定字符\n");
fflush(stdin);
for (i = 0; (c = getchar()) != '\n'; i++)
{
if (c=='1')
ch = 1;
else if (c == '2')
un = 1;
else if (c == '3'){
rm = 1;
}else
printf("输入错误\n");
}
if (ch == 1)
{
printf("请输入字符串:");
for (i = 0; (c = getchar()) != '\n'; i++)
t[i] = c;
t[i] = 0;
}
else if (un == 1)
{
len = strlen(t);
unchar(t,len);
}
else if (rm== 1)
{
printf ("请输入要删除的字符");
scanf("%c", &r);
rmchar(t, r);
}
printf("处理后字符串为:%s\n", t);
}
}
大致改了下
比较字符时 应该是==号
c语言字符串长度问题
"ab\\n\\\\012\/\\\\\\""——a b \\n \\\\ 0 1 2 \/ \\\\ \\" \\0——共11个,最后的\\0是系统自动 加上的字符结束标记,测长度时不包括这个\\0,所以长度是10。"ab\\n\\0y\\012\/\\\\\\""——a b \\n \\0 1 2 \/ \\\\ \\" \\0——共1...
c语言字符个数问题
串内有9个字符,外加一个串结束符'\\0',共10个字符 。以下每行一个字符:b a \\x54 ASCII值为84的字符 \\\\ 一个\\ p p \\201 一个扩展ASCII字符,ASCII值为129 s s \\0
C语言字符串反斜杠表示问题
拥有转义字符的原因基本上是两点:一、使用转义字符来表示字符集中定义的字符,比如ASCll里面的控制字符及回车换行等字符,这些字符都没有现成的文字代号。所以只能用转义字符来表示 。二、某一些特定的字符在编辑语言中被定义为特殊用途的字符。这些字符由于被定义为特殊用途,它们失去了原有的意义。
关于C语言的字符串指针的问题?
如果输入12345,那么p指向1,即p中存放着1的地址。没有字符串的指针和指针指向的内容不能修改一说。无论什么类型的指针,只要是“常指针”就有三种情况不可改变:指针是常量——这个指针只能指向申明时指向的目标,不能指向别处。指向的内容是常量——不能通过这个指针改变指向的内容,但指针可以指向别处...
C语言关于字符串长度的问题
'\\016' 是一个有效的字符'\\018' 不是一个有效的字符,因为8进制数中不能含有8所以\\018等同于 '\\01' 和 '8'所以 char str[] = "\\La\\016ef";\/\/等同于char str[] = { '\\L', 'a', '\\016', 'e', 'f', '\\0' }; \/\/ 6 个字符char str[] = "\\La\\016ef";\/\/等同于char...
C语言 字符串输出时最后出现乱码
输出出现乱码就是因为字符串结尾并没有结尾符'\\0'。gets函数读入一行字符串时,会在最末尾自动加上'\\0'结尾。但是你在for循环内将s2的字符一个个拷贝到s中的时候,循环限定条件只到了s2字符串的'\\0'结尾符之前,所以输出乱码了。将循环条件k<a+b改为k<a+b+1或者k<=a+b就可以将s2字符串最...
c语言字符串比大小问题
首先比较第一个字符,最小的是a开始的然后是c开始的,最后是d开始的 由于a开始的字符串有"abc","aabdfg","abbd",c和d开始的各自有一个 所以"dcdbe"是最大的,倒数第二大的是"cd"然后再看a开始的,比较第二个字符,最小的是a,只有一个字符串"aabdfg";其次是b,有两个字符串;所以"...
c语言,关于字符串重合问题。
两个字符串都复写一遍,最后一个字母可以不用复写,然后求最长公共子串就可以了。比如题目中的例子就可以理解为求 ABCEFAGADEGKABUVKLM ABCEFAGADEGKABUVKL 和 MADJKLUVKL MADJKLUVK 这两个字符串的最长公共子串。可以证明两个环的公共子串一定是这两个字符串的公共子串,并且这两个字符串的长度...
C语言中字符串大于字符串吗?
是的,字符串“That”小于字符串“The”。因为是利用ASCII编码逐位按照顺序来比较的:第一位“T”相同,第二位“h”相同,第三位“a”<“e”,所以“That”小于“The”。以compareTo()方法为例,两个字符串比较大小方法:1、如果字符串相等返回值为0,不等返回其他数值。比较方法是先比较对应字符...
c语言问题求解!!!谢谢!!!
+=,-= 是赋值运算符,优先级仅比‘,’高,是明显低于算术运算符‘*’的,而且赋值运算符的结合性是“从右往左”(也就是把右值赋给左值)。当然前提是已经给a赋值了,那么计算的顺序是,a*a -> a = a-(a*a) -> a= a+(a-a*a)2、字符串长度问题。字符串赋初值时,系统自动给字符...
徭毕野马: 我也试了一下,没问题,你到底是什么问题,是要在s1或s2中输入空格吗?那么用gets函数;gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符. 其调用格式为:gets(s);其...
钢城区18086638054: c语言如何匹配字符串的问题 - ?
徭毕野马: 可以使用strcmp函数匹配两个字符串,也可以用strstr函数在前一个字符串中查找后字符串包含的字符串
钢城区18086638054: C语言字符串问题 - ?
徭毕野马: p1是个指针,是地址,+2就是该地址+2,该地址往后面2个的那个地址 strcat(p1+2,p2+1)的执行:p1=”abcd”,由于p1指向"abcd"的首地址'a'的地址,所以p1+2指向'c'的地址p2=”ABCD”,由于p2指向"ABCD"的首地址'A'的地址,所以...
钢城区18086638054: 数据结构(C语言)中字符串的问题 - ?
徭毕野马: 空串 :里面是空 为NULL 空格串:里面是一个" " ASCLL=32 定义空串 : string a="";“空串”是无法输入,但可以使一串为空串 a="";
钢城区18086638054: 关于C语言字符串的问题 - ?
徭毕野马: 1、正确!2、正确3、错误!应该选C.p是指向指针的指针变量,而是一个指针数组,alpha表示指向数组首地址的指针,也相当于指向指针的指针,所以P完全相当于alpha,alpha的一切表示形式都可以用...
钢城区18086638054: C语言字符串问题?
徭毕野马: for( i=0; i<strlen(strInput); i++ ) { printf( "%c ", strInput[i] ); } printf( "\n" );
钢城区18086638054: c语言关于字符串的问题,新手求教 - ?
徭毕野马: strcmp这个函数比较两个字符串大小,是按字符的ansii码进行比较的.strcmp(str1,str2),对str1和str2的每个字符进行比较,如果str1>str2,则strcmp的返回值大于0,反之返回值小于0.所以当楼主输入的str2是小写字符串是,那么str1是恒小于str2的,输出的永远是str2接在str1后面.另外如果输入大写字符串str2,当str2的首字符ascii码值大于H的ascii值时,(或者str2前几个字符于str1都相同,直到不同的字符出现,并且大于str1中相同位置的字符ascii值时),输出的也是str2接在str1后面了,楼主可以试试就知道了.
钢城区18086638054: 一道C语言中字符串的简单问题~ - ?
徭毕野马: #include"stdio.h"#include"string.h" void main() { int j,k,i=0; char ch[20],str[80],ss[20]; printf("enter "); scanf("%s %s",ch,str); while(ch[i++]);i=i-1;printf(" %d ",i); for(j=0;str[j+i];j++) {for(k=0;k<i;k++)ss[k]=str[j+k]; ss[k]='\0'; if( strcmp(ss,ch)==0 )break;} printf(" %d ",j); }
钢城区18086638054: C语言中字符串连接怎么解决?? - ?
徭毕野马: 可以使用字符串连接函数strcat()函数,头文件是#include<string.h>; 举例如下:两个字符串char [100]="abc",b[50]="def"; 将其变为一个字符串并输出#include<stdio.h>#include<string.h> int main() { char a[100]="abc",b[50]="def"; ...
钢城区18086638054: 关于C语言的字符串问题 - ?
徭毕野马: #include <stdio.h> int main() { char strName[100]; scanf("%s",strName); printf("%s\n",strName);//怎么没不行呢? return 0; }