c-如何使用scanf以空格分隔字符



这里是input.txt

5
A B C D E

我想得到这些字符,所以我使用了这个代码:

//...
int n;
fscanf(fp_i, "%d", &n);
//...
char data;
for (int i = 0; i < n; i++) {
fscanf(fp_i, "%c", &data);
array_c[i] = data;
}
//...

array_c中还有空格,所以我尝试了" %c ",它成功了!

我想学习另一种用空格获取字符的方法。还有更复杂的方法吗?

这样做很好,唯一的改进是我建议它直接读取数组,而不是中间变量data

for (int i = 0; i < n; i++) {
fscanf(fp_i, " %c ", &array_c[i]);
}

请注意,要将array_c视为字符串,它应该有6个元素,第6个元素是null终止符。

你会有:

//...
int n;
fscanf(fp_i, "%d", &n);
char array_c[n + 1];
//...
for (int i = 0; i < n ; i++) {
fscanf(fp_i, " %c", &array_c[i]);
}
array_c[n] = '';
//...

运行样本

只要在%c前面增加一个空间就可以了。

int n;
fscanf(fp_i, "%d", &n);
char data;
for (int i = 0; i < n; i++) {
fscanf(fp_i, " %c", &data); // space front of %c
array_c[i] = data;
}

相关内容