Написание файла с использованием c программы в формате таблицы
Я хочу написать файл в формате таблицы с помощью программы. Я использую fputs для записи файла. Мой файл выглядит так:
[sl] [Name] [School] [add]
1 ABC DEF Dav India
2 XYZ LLL USA
Но я хочу, чтобы выходной файл выглядел так:
[sl] [name] [school] [add]
1 ABC DEF DAV INDIA
2 XYZ LLL USA
Я хочу знать, есть ли что-то вроде спецификатора длины в fputs
как в printf, чтобы я мог изменить формат файла.
2 ответа
Я думаю, что вы ищете fprintf
, Узнайте больше о fprintf здесь. Он используется точно так же, как printf
, кроме того, что пишет в файл.
РЕДАКТИРОВАТЬ
Если ваша строка хранится в разных переменных, используйте fprintf
следующее:
fprintf(fp,"%-15s %-15s %-15s %-15s", "string 1", "string 2", "string 3", "string 4");
Число 15
является фиксированной длиной, которую будет использовать строка (вы можете изменить ее в зависимости от максимальной длины строки или от других предпочтений). Знак минус для левой оправданной строки.
Как указал Кьюби, вы захотите использовать fprintf
вместо fputs
это сократит количество необходимого кода. fprintf
запишет ваши данные в файл в соответствии со строкой формата. Поскольку ваши данные будут строковыми данными, вы будете записывать их по частям, указав% s в строке формата для каждого куска. Возьмите например свой ABC DEF
слова. Ты можешь использовать fprintf
записать строковые литералы следующим образом:
fprintf (fp, " %s %s\n", "ABC", "DEF");
Вы также можете указать минимальную ширину поля для каждого слова, которое вы пишете, указав и целое число между %
а также s
, такие как %10s
написать '-------ABC' с минимальной шириной 10 символов. Вы также можете разместить -
знак перед номером слева выровнять строку. Например %-10s
вывести "ABC-------". (тире - это пробелы, просто для иллюстрации). Может помочь разделить нужную информацию в табличной форме, не записывая различное количество пробелов для каждого отдельного вызова fprintf.
Смотрите 'man 3 fprintf` для всех вариантов. Есть буквально тысячи примеров в Интернете, чтобы помочь.