如何在 C 中输入或读取用户的字符、单词和句子?
C是一种过程编程语言。它最初是由 Dennis Ritchie 开发的一种系统编程语言,用于编写操作系统。 C 语言的主要特点包括对内存的低级访问、一组简单的关键字和简洁的风格,这些特点使 C 语言适用于操作系统或编译器开发等系统编程。本文重点介绍如何在 C 中将一个字符、一个字符串和一个句子作为输入。
在 C 中读取字符
问题陈述#1:编写一个 C 程序来读取单个字符作为 C 中的输入。
句法-
scanf("%c", &charVariable);
方法-
- scanf() 需要知道变量的内存位置以存储来自用户的输入。
- 所以,在变量(这里是ch)前面会使用&符号来知道变量的地址。
- 这里使用 %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);
方法-
- 首先,初始化大小为(大于等于字的长度)的char数组。
- 然后,使用 %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-
- scanf() 不会将空白字符存储在字符串变量中。
- 它只读取空格以外的字符并将它们存储在指定的字符数组中,直到遇到空格字符。
句法-
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被遇到读取字符串,并将其存储为“仙”的阵列上。
- 这里, %[ ] 是扫描集说明符。
- scanf 将只处理属于 scanset 的那些字符。
- 如果扫描集的第一个字符是 '^',则说明符将在该字符第一次出现后停止读取。
- ^\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 基础课程。