亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 编程字符串

C 编程字符串

在本教程中,您将了解 C 编程中的字符串。您将通过示例学习声明、初始化它们并将它们用于各种 I/O 操作。

在C编程中,字符串是一个以空字符结尾的字符序列\0 .例如:

char c[] = "c string";

当编译器遇到用双引号括起来的字符序列时,它会附加一个空字符 \0 默认在最后。

<图>

如何声明一个字符串?

声明字符串的方法如下:

char s[5];
<图>

在这里,我们声明了一个 5 个字符的字符串。


如何初始化字符串?

您可以通过多种方式初始化字符串。

char c[] = "abcd";

char c[50] = "abcd";

char c[] = {'a', 'b', 'c', 'd', '\0'};

char c[5] = {'a', 'b', 'c', 'd', '\0'};
<图>

再举一个例子:

char c[5] = "abcde";

在这里,我们尝试分配 6 个字符(最后一个字符是 '\0' ) 到 char 数组有 5 个字符。这很糟糕,你不应该这样做。


给字符串赋值

数组和字符串是 C 中的二等公民;一旦声明,它们不支持赋值运算符。例如,

char c[100];
c = "C programming";  // Error! array type is not assignable.

注意: 使用 strcpy() 函数来复制字符串。


从用户那里读取字符串

您可以使用 scanf() 读取字符串的函数。

scanf() 函数读取字符序列,直到遇到空格(空格、换行符、制表符等)。


示例1:scanf()读取字符串

#include <stdio.h>
int main()
{
    char name[20];
    printf("Enter name: ");
    scanf("%s", name);
    printf("Your name is %s.", name);
    return 0;
}

输出

Enter name: Dennis Ritchie
Your name is Dennis.

尽管丹尼斯·里奇 在上面的程序中被输入,只有 "Dennis" 存储在 name 中 细绳。这是因为 Dennis 后面有一个空格 .

另请注意,我们使用了代码 name 而不是 &namescanf() .

scanf("%s", name);

这是因为 name 是一个 char 数组,我们知道数组名会衰减为 C 中的指针。

因此,名称scanf() 已经指向字符串中第一个元素的地址,这就是为什么我们不需要使用& .


如何阅读一行文字?

您可以使用 fgets() 函数读取一行字符串。而且,您可以使用 puts() 显示字符串。


示例 2:fgets() 和 puts()

#include <stdio.h>
int main()
{
    char name[30];
    printf("Enter name: ");
    fgets(name, sizeof(name), stdin);  // read string
    printf("Name: ");
    puts(name);    // display string
    return 0;
}

输出

Enter name: Tom Hanks
Name: Tom Hanks

在这里,我们使用了 fgets() 从用户那里读取字符串的函数。

fgets(name, sizeof(name), stdlin); // read string

sizeof(name) 结果为 30。因此,我们最多可以输入 30 个字符,即 name 的大小 字符串。

为了打印字符串,我们使用了 puts(name); .

注意: gets() 函数也可以是从用户那里获取输入。但是,它已从 C 标准中删除。

这是因为 gets() 允许您输入任意长度的字符。因此,可能存在缓冲区溢出。


将字符串传递给函数

字符串可以以与数组类似的方式传递给函数。了解有关将数组传递给函数的更多信息。


示例 3:将字符串传递给函数

#include <stdio.h>
void displayString(char str[]);

int main()
{
    char str[50];
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);             
    displayString(str);     // Passing string to a function.    
    return 0;
}
void displayString(char str[])
{
    printf("String Output: ");
    puts(str);
}

字符串和指针

与数组类似,字符串名称“衰减”为指针。因此,您可以使用指针来操作字符串的元素。我们建议您在检查此示例之前检查 C 数组和指针。


示例 4:字符串和指针

#include <stdio.h>

int main(void) {
  char name[] = "Harry Potter";

  printf("%c", *name);     // Output: H
  printf("%c", *(name+1));   // Output: a
  printf("%c", *(name+7));   // Output: o

  char *namePtr;

  namePtr = name;
  printf("%c", *namePtr);     // Output: H
  printf("%c", *(namePtr+1));   // Output: a
  printf("%c", *(namePtr+7));   // Output: o
}

常用字符串函数


C语言

  1. C# 字符串
  2. C# 编程中的命名空间
  3. 在 C++ 编程中将数组传递给函数
  4. C 编程运算符
  5. C 编程中用户定义函数的类型
  6. Java 字符串
  7. Java 枚举字符串
  8. C++ 字符串:strcpy()、strcat()、strlen()、strcmp() 示例
  9. C 中的字符串:如何声明变量、初始化、打印、示例
  10. Python 字符串:替换、连接、拆分、反转、大写和小写
  11. C 教程
  12. Java - 字符串类