C语言小tips

  1. C语言小tips
  2. strcmp函数
    1. 返回值
  3. getchar和putchar
  4. fseek 函数
  5. gets函数
  6. puts函数
  7. 一般杂项
    1. 科学计数法
    2. 数组名
    3. 条件表达式
    4. 数组初始化
    5. if语句tips(重点)
    6. 杂项中的杂项

C语言小tips

记一下小知识,方便随时看看。

strcmp函数

C 库函数 int strcmp(const char *str1, const char *str2)str1 所指向的字符串和 str2 所指向的字符串进行比较。

返回值

该函数返回值如下:

  • 如果返回值小于 0,则表示 str1 小于 str2。
  • 如果返回值大于 0,则表示 str1 大于 str2。
  • 如果返回值等于 0,则表示 str1 等于 str2。
  • 特别注意:strcmp(const char *s1,const char * s2) 这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。

getchar和putchar

C 库函数 int putchar(int char) 把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。(就是向屏幕输出一个字符)

C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数。

fseek 函数

函数名:fseek函数
头文件:#include<stdio.h>
功能:把与fp有关的文件位置指针放到一个指定位置。
格式: int fseek(FILE *stream, long offset, int fromwhere);
范例一:fseek(fp, 0L, SEEK_END);
解释:文件指针定位到文件末尾,偏移0个字节

范例二: fseek(fp,50L,0);或fseek(fp,50L,SEEK_SET);
解释:其作用是将位置指针移到离文件头50个字节处

起始点 SEEK_SET K_CUR SEEK_END
对应的数字 0 1 2
代表的文件位置 文件开头 文件当前位置 文件末尾

注意:
fseek函数的文件指针,应该为已经打开的文件。如果没有打开的文件,那么将会出现错误。

**值得说明的是,fseek() 一般用于二进制文件,在文本文件中由于要进行转换,计算的位置有时会出错。 **

gets函数

gets()函数是一次可以读取多个字符的函数,而不是一次只能读取一个字符。gets()函数是用于从标准输入流(stdin)中读取字符串的函数,它会一直读取字符,直到遇到换行符或者到达文件末尾时为止。

puts函数

C 库函数 int puts(const char *str) 把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。

一般杂项

科学计数法

在C语言中,使用科学计数法表示数值需要在数值后面加上字母e或E,再加上指数。例如,1.23e4表示的是1.23乘以10的4次方,即12300,而4.56E-3表示的是4.56乘以10的负3次方,即0.00456。

注意,指数可以是正整数、负整数或0,但是不能包含小数点。如果指数是0,可以省略掉e或E后面的0,例如1e0可以简写为1。

数组名

一个数组确实是由连续的一块内存单元组成的,这是数组的特性之一。
但是,指针变量并不一定是数组的首地址。
在 C 语言中,数组名被解释为指向数组第一个元素的指针。
这意味着数组名可以用作指针来访问数组中的元素。
然而,这并不意味着数组的指针变量就一定是数组的首地址。

image-20230927103037170

条件表达式

条件表达式不能取代一般if的语句,条件表达式只能取代两个同样类型值的表达式的。
对于两个不同类型值的表达式,是不能用条件表达式进行取代的。

数组初始化

C语言允许用字符串的方式对数组作初始化赋值。

if语句tips(重点)

if(a=5) 是允许的。(1分) 正确(重点)

杂项中的杂项

在C语言中能逐个地使用下标变量,也能一次引用整个数组。(1分) 错误

逻辑表达式的值只能为1或0。(1分)正确

continue 只能用于循环体中。(1分) 正确

凡在函数中未指定存储类别的局部变量,默认的存储类别是自动存储类别(auto)

一个变量的地址称为该变量的指针(1分) 正确

变量被定义后 , 它的作用域和寿命就被确定了 , 并且不可改变。

在switch语句中,多个case可以共用一组执行语句。

文件是否打开是可以判断的。(1分) 正确

在多层循环中, 一个break语句只向外跳一层。(1分) 正确

以“a”方式打开一个文件时,文件指针指向文件首。(1分)错误 解析:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作

寄存器类变量的作用域和寿命与自动类变量的相同。 (1分) 正确

结构体名在定义结构体时不可省略。(1分)错误

变量的类型通常指存储类和数据类型两种。 (1分) 正确

不允许把一个数值或字符赋予指针变量(1分) 正确

两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数(1分) 正确

C 语言标准格式输出函数 printf() 的参数表是由若干个表达式组成。 (1分) 正确

一个变量的数据类型被强制转换后,它将保持被强制转换后的数据类型。(1分)错误

内部静态类变量的作用域和寿命与自动类变量是不同的。内部静态类变量的寿命更长,会在多次函数调用中保持其值。

字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串(1分) 正确

分号是C语句之间的分隔符,不是语句的一部分 错误

++(i+1);是非法的赋值语句

C语言中有逻辑类型 错误

假定x和y为double型,则表达式x=2,y=x+3/2的值是3.500000 错误,是3.000000

可以用关系运算符对字符串的大小进行比较 错误

除逗号运算符外,赋值运算符的优先级最低 正确

sizeof(double)是一种函数调用 错误,为整型数据

当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 错误

若有说明int s[3][4]={0};则只有元素s[0][0] 可得到初值0。 错误(所有的元素都是0)如果是1的话也是全部都是1,如果是1,2的话,其他没被赋值的元素就全部都是0

在一个函数内定义的变量只在本函数范围内有效 正确

函数的形参和实参分别占用不同的存储单元 错误(他们占用的存储单元是相同的哦,如果在函数内部用指针改变外部的函数,外部的函数同样会发生改变,这就是为什么相同)

若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,B)));在此函数调用语句中实参的个数是6 错误,3(在函数调用语句中,每个逗号分隔的表达式都被视为一个独立的实参)

当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址 正确

C语言中,宏替换没有数据类型限制 正确

在 C 语言中,我们可以使用八进制转义序列来表示一个字符常量。在这种情况下,转义序列由反斜杠(\)后面跟着一到三个八进制数字组成。

C语言中,每个函数都可以被其它函数调用(包括main函数) 错误


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。