C - работа с текстовыми файлами - PullRequest
0 голосов
/ 27 декабря 2011

По сути, я работаю над небольшой программой на C (опять же, не домашнее задание, просто некоторые эксперименты, пока я не в универе :)). Моя цель - взять файл, содержащий много слов, разделенных пробелами, пройтись по файлу и, когда найден пробел, заменить его на \ n, создав таким образом большой список слов.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
/*
 * 
*/
int main(int argc, char** argv) {

char myFile[100];
int i;
FILE *file;
while(argc--) {
    printf("%s\n", *argv++);
}

return 0;
}

Очень просто то, что у меня есть, что мне нужно сделать дальше, это взять аргумент и поместить его в массив myFile, чтобы я мог использовать его в качестве fopen, или, может быть, есть другой способ сделать это?

Кроме того, моя идея заключалась в том, чтобы затем прочитать строку в массив с помощью fgets, перебрать ее char на char, найти '', если я найду его, заменить на \ n, а затем переписать эту строку в файл. Это звучит разумно, выполнимо?

С уважением,

и спасибо!

Ответы [ 2 ]

3 голосов
/ 27 декабря 2011

самый простой способ - открыть файл в двоичном режиме

FILE *fpIn = fopen( argv[1], "rb" );

затем откройте новый файл для записи

FILE* fpOut =  fopen( "tmp.out", "wb" );

и считывание побайтно из fpIn с помощью fgetc и запись с использованием fputc в новый файл

перед записью проверьте, является ли байт пробелом (используйте isspace()), вместо этого напишите '\ n'.

, затем удалите оригинал и переименуйте tmp.out в argv[1]

0 голосов
/ 28 декабря 2011

Это в значительной степени именно то, о чем вас просит K & R Exercise 1-12 (вы можете попеременно перенаправлять входной файл на стандартный ввод, если хотите пропустить указатели файлов).Это хорошее упражнение.

К вашему сведению, хороший ресурс для решений K & R: http://clc -wiki.net / wiki / K & R2_solutions

...