c - scanf() 包含空格字符的句子
问题描述
我正在尝试使用 open()、write() 将用户输入的字符串(使用 scanf())存储在 .txt 文件中。我确实使用缓冲区来存储输入,然后使用 write() 将其发送到文件。问题是我无法存储任何作为空格键字符的“”...它只存储空格之前的字符。但我实际上想一直写到'\ n'。这是我的代码:
void writing(char* argument){
int desc_fich=-1, nb_lus=-1, nb_write=-1;
printf("Enter the words : ");
char entry[50];
for (int i=0;i<50; i++){
entry[i]= '\0';
}
scanf("%s", &entry);
int i=0;
int number=0;
while ( entry[i] != '\0' ){
number++;
i++;
}
desc_fich = open(argument, O_WRONLY | O_CREAT | O_APPEND);
nb_write = write(desc_fich, entry, nombre);
close(desc_fich);
}
`
解决方案
scanf("%s", &entry);
首先读取并跳过所有前导空白。然后读取并保存可能太多的非空白字符。
而不是scanf()
,fgets()
用来读取一行。
// scanf("%s", &entry);
if (fgets(entry, sizeof entry, stdin)) {
...
// nb_write = write(desc_fich, entry, nombre);
nb_write = write(desc_fich, entry, strlen(entry));
推荐阅读
- dynamics-crm - Microsoft USD - 通过 CRM 页面按钮单击在 USD 选项卡中打开第三方应用程序
- java - 为 elasticsearch 设置会话 cookie
- android - 为什么我在主线程中发布了一个 Runnable,但 Runnable 是在 HandlerThread 中执行的?
- python - 我可以使用 Mypy 存根作为接口吗?
- java - 如何检查sqlite数据库中是否存在记录?
- r - 使用 R plotly plot_dendro 绘制旋转树状图
- java - 如何从另一个类访问点数组列表?
- java - 从多模块项目中的 .war-dependency 获得覆盖
- postgresql - Postgres GROUP BY with count 返回文本的整数
- visual-studio-code - 当我引用定义时,如何让 Visual Studio Code 忽略 .d.ts 文件?