C语言字符串问题

C语言字符串问题,第1张

"\\"中共有如下字符
\\:转义为一个字符\
\":转义为一个字符"
A: 字符A
B: 字符B
C: 字符C
D: 字符D
E: 字符E
\":转义为一个字符"
\\:转义为一个字符\
上面是9个字符,
注意,作为字符串,最后还有一个串尾符'\n'
所以共是10个字符
给你一个代码验证一下:
#include<conioh>
#include<stdioh>
main()
{
printf("%d",sizeof("\\\"ABCDE\"\\"));
getch();
}
说结果为9的,都忘记串尾符了!
题2:已知s,正确的语句是() A s="ABCDEF"; Bs="ABCDEF";为什么
这个题目,A是对的。
s是一个指针,所以s="ABCDEF";的作用是将s指向常量字符串"ABCDEF"的首地址,所以是对的。
s为具体的数据值(对于s指向的地址取),它是一个具体的char数据,所以s="ABCDEF";这是错的,应该是s='A';

这里直接给代码了哈:
#include<bits/stdc++h>//万能头文件
using namespace std;
string s,s1="stop";//初始化定义字符串s 和s1,s1设定为"stop",方便后面判断
int main(){
cin>>s;//读入
if(s==s1)//直接判断是否为s1(也就是stop)
cout<<"请点赞呀!";//输出,这个自己写
else
cout<<"不是单词stop!";//否定的输出;
}
行的话麻烦给个赞

(1)
strcmp函数的原型是:
int
strcmp(char
p1,char
p2)
{int
i=0;
while
((p1+i)==(p2+i))
if
((p1+i++)=='\0')
return
0;/
这里是先判断(p1+i)=='\0',然后再是i++
/
return
((p1+i)-(p2+i));
}
从上面代码可以看出:
1两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。strcmp的返回值是一个整型数int,两个字符串相等返回值0,若不相等返回值是两个字符串从开始看起第一个不相等的字符的ASIC2值之差(前一个减去后一个)。
2
strcmp中的形参是两个指向字符串的指针变量。
//
strcmpc
#include
<syslibh>
#include
<stringh>
main()
{
char
s1="stop";
char
s2="stop";
int
r;
clrscr();
r=strcmp(s1,s2);
if(!r)
printf("s1
and
s2
are
identical");
else
if(r<0)
printf("s1
less
than
s2");
else
printf("s1
greater
than
s2");
getchar();
return
0;
}
(2)按照C字符串的定义,遇到\0结束符字符串就结束了,所以:
\t一个
\v一个
\一个
\0结束
答案是3
(3)
这是因为scanf()函数在不能接受空格
而这个函数又是以TAB键,回车符或空格作为结束符的
所以在输入aa
bb时,分别被前两个字符数组所接受
但是从第三个字符数级开始是用gets()函数来接受字符串的
在用户按下第一个回车键后,回车键被储存内存缓冲区中,等待用户的接受
又由于在下一个输入函数是gets(),因为这个函数在接受字符串时只以回车键作为它接受字符串的结束符,所以在输入cc
dd时,cc和dd中间的空格也被作字符存储到第四个字符数组中
在结果中空的一行,就是第三个字符数组输入的回车符,即换行符


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12752021.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-27
下一篇2025-08-27

发表评论

登录后才能评论

评论列表(0条)

    保存