stringc 读入
时间: 2024-03-03 16:46:21 浏览: 66
在C语言中,要读入字符串可以使用`scanf`函数者`gets`函数。但是这两个函数都存在一些安全性问题,因此更推荐使用`fgets`函数来读入字符串。
`fgets`函数的原型如下:
```c
char *fgets(char *str, int n, FILE *stream);
```
它会从指定的输入流中读取一行字符串,并将其存储到指定的字符数组中。参数`str`是用于存储字符串的字符数组,参数`n`是字符数组的大小,参数`stream`是输入流,通常可以使用`stdin`表示标准输入。
下面是一个示例代码,演示如何使用`fgets`函数读入字符串:
```c
#include <stdio.h>
int main() {
char str[100];
printf("请输入字符串:");
fgets(str, sizeof(str), stdin);
printf("你输入的字符串是:%s", str);
return 0;
}
```
相关问题
fscanf读入string
`fscanf`是C语言标准库中的函数,用于从指定文件流中按照格式字符串读取数据。然而,它并不直接支持将数据读入到字符串变量中,因为`fscanf`通常用于读取整数、浮点数或其他特定类型的值,而不是字符串。
如果你需要从文件中读取字符串,应该使用`fgets`函数。例如:
```c
char str[50]; // 定义一个足够大的字符串数组
FILE* file = fopen("filename.txt", "r"); // 打开文件
if (file != NULL) {
if (fgets(str, sizeof(str), file)) { // 使用fgets读取一行文本,包括结束符'\n'
str[strlen(str)-1] = '\0'; // 删除可能存在的换行符
printf("Read string: %s\n", str); // 输出读取的字符串
} else {
perror("Error reading from file");
}
fclose(file);
} else {
perror("Error opening file");
}
```
在这个例子中,`fgets`会把读取到的一行文本(直到遇到换行符或达到数组长度)存入`str`中。最后记得关闭文件。
用scanf读入string
scanf函数可以用来读取字符串,但是它无法像直接输入整数那样方便地使用scanf()函数输入string变量。因为string并非是C的原生类型。但是我们可以通过预先分配空间来实现scanf输入string类型的数据。下面是两种方法:
方法一:
```c++
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main() {
string a;
a.resize(2); // 需要预先分配空间
scanf("%s", &a[0]);
cout << a;
return 0;
}
```
方法二:
```c++
#include<iostream>
#include<string>
using namespace std;
int main() {
string str_scanf;
printf("str_scanf:");
scanf("%s",str_scanf.c_str()); // c方法输入
printf("%s\n", str_scanf.c_str()); // 输出
return 0;
}
```
阅读全文