Другие языки программирования и технологии

Си. Программа читает файл txt и заполняет находящимися там числами массив, но

в данном файле имеются так же символы "ff" , при считывании которых должны оставаться пустые ячейки в массиве. Проблема у меня в составлении условии при котором это должно происходить, вообщем если заменяю "ff" в txt на 0 всё отлично работает, но вот с форматом char у меня проблемы, я просто не знаю как с ним работать, вообщем вот с 0 вместо "ff" , как условие задать чтобы и с "ff" работало?

main()
{
int a,b;
int c;
int fat[10][10];
printf ("inicializaciy massiva iz fila txt\n");
FILE *filetxt;
filetxt=fopen("FAT.txt","r");
for (a=0;a<=9;)
{
for (b=0;b<=9;b++)
{
fscanf (filetxt,"%2d",&c);
if (!(c=="0"))
{
fat[a][b]=c;
printf("%2d ",fat[a][b]);
}
}
a++;
printf ("\n");
}
fclose(filetxt);
printf ("\n%d\n",fat[5][1]);
system("PAUSE");
return 0;
}
> при считывании которых должны оставаться пустые ячейки в массиве.
Что значит "пустые ячейки в массиве"? Если массив не инициализирован какими-нибудь начальными значениями, то в этих "ячейках" будет "мусор".
Как вариант:

#include <stdio.h>
#include <stdlib.h>

main() {
int a,b;
char s[12];
int c;
int fat[10][10] = { 0 };
printf ("inicializaciy massiva iz fila txt\n");
FILE *filetxt;
filetxt=fopen("FAT.txt","r");
for (a = 0; a <= 9; a++) {
for (b = 0; b <= 9; b++) {
fscanf(filetxt, "%s", s);
if (sscanf(s, "%d", &c) > 0) {
printf("%2d ", c);
fat[a][b] = c;
} else {
printf("-- ");
// КАКАЯ-ТО ФИГНЯ В ФАЙЛЕ, СОВСЕМ НЕ ЧИСЛО
}
}
printf ("\n");
}
fclose(filetxt);
printf ("\n%d\n",fat[5][1]);
system("PAUSE");
return 0;
}
Евгений Полевщиков
Евгений Полевщиков
77 897
Лучший ответ
Евгений Полевщиков Вариант без использования строк http://pastebin.com/Psn9AiM3
Паша Быковский Спасибо! Как раз то что нужно, особенно инициализация массива 0 в самом начале. Сейчас пишу программу в которую вводится номер стартовой ячейки в массиве, по содержанию этой ячейки определяется следующая ячейка массива, а окончание как раз таки совпадает с 0, что очень удобно. В последствие выводится все задействованные ячейки массива, и им сопоставляются массив из другого txt файла, но уже с буквами, и собирается какое-то слово.
Я бы сделал так

#include

void main() {
int ch;
int my_ch = 32 // замена ff на пробел к примеру
int f_ch = 102 // код символа f
ch = getchar();
while( ch != -1 ) { // пока входной файл не кончился
if(ch != f_ch) putchar(ch);
else ch = getchar(); // проверем следущий символ на f_ch
if(ch == f_ch) putchar(my_ch); // выводим пробел
ch = getchar();
}
}

Записать это в файл a.c и скомпилировать

Запуск из консоли
a.exe < FAT.txt

Похожие вопросы