Чтение ввода из файла и разбиение строки
63f7hj-9 L Is this correct
в целое число как 63, игнорируя 7hj-9, а затем читая 22 пробела в строке space1, а затем читая символ L как символ, а остальную часть строки «Is this правильная» внутри строки str2.Это пример того, как вы можете использовать fscanf (или scanf) для достижения этой цели.
% d будет читать целое число, так как оно является спецификатором формата для целого числа
Далее нам нужно игнорировать «f7hj-9» из файла, поэтому просто записать его в том виде, как он есть, сделает работу
Далеенам нужно прочитать 22 пробела, чтобы% 22c прочитал 22 символа независимо от того, является ли символ новой строкой или пробелом (здесь 22 пробела)
- Далее нам нужно прочитать символ, чтобы% c сохранил егов char c
- Теперь другой% * c будет игнорировать один пробел после того, как L
- , используя% [^ \ n] s, будет читать остальную часть строки до новой строки
#include <stdio.h>
int main() {
int n;
char c;
char space1[23];
char str2[32];
FILE *fp;
fp = fopen("b.txt", "r");
if(fp == NULL) {
printf("Failed to open the file\n");
return 1;
}
if(fscanf(fp, "%df7hj-9%22c%c%*c%[^\n]s", &n, space1, &c, str2) != 4) {
printf("Read failure\n");
return 1;
}
printf("Integer = %d\n", n);
printf("Spaces = %sEnd\n", space1);
printf("Character = %c\n", c);
printf("String = %s", str2);
return 0;
}
Входные данные:
63f7hj-9 L Is this correct
Выход:
Integer = 63
Spaces = End
Character = L
String = Is this correct