📜  如何在 C 中输入或读取用户的字符、单词和句子?

📅  最后修改于: 2022-05-13 01:54:37.974000             🧑  作者: Mango

如何在 C 中输入或读取用户的字符、单词和句子?

C是一种过程编程语言。它最初是由 Dennis Ritchie 开发的一种系统编程语言,用于编写操作系统 C 语言的主要特点包括对内存的低级访问、一组简单的关键字和简洁的风格,这些特点使 C 语言适用于操作系统或编译器开发系统编程。本文重点介绍如何在 C 中将一个字符、一个字符串和一个句子作为输入。

在 C 中读取字符

问题陈述#1:编写一个 C 程序来读取单个字符作为 C 中的输入。



句法-

scanf("%c", &charVariable);

方法-

  1. scanf() 需要知道变量的内存位置以存储来自用户的输入。
  2. 所以,在变量(这里是ch)前面会使用&符号来知道变量的地址。
  3. 这里使用 %c 格式说明符,编译器可以在使用 scanf()函数获取输入时理解字符类型的数据在变量中
C
// C program to implement
// the above approach
#include 
  
// Driver code
int main()
{
    char ch;
  
    // Read a char type variable,
    // store in "ch"
    scanf("%c", &ch);
    printf("Output : %c", ch);
    return 0;
}


C
// C Program to implement
// the above approach
#include 
  
// Driver code
int main()
{
    char word[100];
  
    // word is treated as a pointer
    // to the first element of array
    scanf("%s", word);
    printf("Output : %s", word);
    return 0;
}


C
// C program to implement
// the above approach
#include 
  
// Driver code
int main()
{
    char sen[100];
    scanf("%[^\n]s", sen);
    printf("Output : %s", sen);
    return 0;
}


C
// C program to implement
// the above approach
#include 
  
// Driver code
int main()
{
    char sen[100];
    scanf("%[^f]s", sen);
    printf("Output : %s", sen);
    return 0;
}


C
// C program to implement
// the above approach
#include 
#define BUFFSIZE 25
  
// Driver code
int main()
{
    char sen[BUFFSIZE];
    fgets(sen, BUFFSIZE, stdin);
    printf("Output : %s", sen);
    return 0;
}



读取字符

用C读一个单词

问题陈述#2:编写一个 C 程序来读取用户输入的单词。

句法-



scanf("%s", stringvariable);

方法-

  1. 首先,初始化大小为(大于等于字的长度)的char数组。
  2. 然后,使用 %s 格式说明符使用 scanf()函数获取字符串。

C

// C Program to implement
// the above approach
#include 
  
// Driver code
int main()
{
    char word[100];
  
    // word is treated as a pointer
    // to the first element of array
    scanf("%s", word);
    printf("Output : %s", word);
    return 0;
}


阅读单词

笔记:
数组名称本身指示其地址。 word == &word[0],这两个是一样的,因为变量名 word 指向数组的第一个元素。因此,无需在 scanf() 中提及与号。

用 C 语言读一个句子

问题陈述#3:编写一个 C 程序来读取用户输入的句子。

方法1-

  1. scanf() 不会将空白字符存储在字符串变量中。
  2. 它只读取空格以外的字符并将它们存储在指定的字符数组中,直到遇到空格字符。

句法-

scanf("%[^\n]s", sen)

C

// C program to implement
// the above approach
#include 
  
// Driver code
int main()
{
    char sen[100];
    scanf("%[^\n]s", sen);
    printf("Output : %s", sen);
    return 0;
}


阅读气味

直到接收到下一行的scanf(“%[^ \ n]的的”,SEN)的装置来读取的字符串包括空格或直到断线即\ n被遇到读取字符串,并将其存储为“仙”的阵列上。

  1. 这里, %[ ] 是扫描集说明符。
  2. scanf 将只处理属于 scanset 的那些字符。
  3. 如果扫描集的第一个字符是 '^',则说明符将在该字符第一次出现后停止读取。
  4. ^\n 代表接受输入直到没有遇到换行符。

C

// C program to implement
// the above approach
#include 
  
// Driver code
int main()
{
    char sen[100];
    scanf("%[^f]s", sen);
    printf("Output : %s", sen);
    return 0;
}


阅读气味

它会在该字符第一次出现后停止阅读 f(在扫描集中指定)。

方法 2 -使用fgets

注意-gets () 从不检查输入字符的最大限制。因此,它们可能会导致未定义的行为,并可能导致缓冲区溢出错误,最终导致程序崩溃。因此,建议不要使用gets函数来读取字符串。为了克服上述限制,可以使用 fgets。

句法-

char *fgets(char *str, int size, FILE *stream)

C

// C program to implement
// the above approach
#include 
#define BUFFSIZE 25
  
// Driver code
int main()
{
    char sen[BUFFSIZE];
    fgets(sen, BUFFSIZE, stdin);
    printf("Output : %s", sen);
    return 0;
}


阅读气味
想要从精选的视频和练习题中学习,请查看C 基础到高级C 基础课程