LINUX.ORG.RU

ошибка сегментации


0

0

#include<stdio.h> main() { FILE *fp; fp=fopen("1.txt","rt"); char ch; do { //ввести символ из файла ch=fgetc(fp); //вывести на монитор putchar(ch); } while(ch!=EOF); fclose(fp); } /*Надо посимвольно просмотреть инфу из файла, компилирует без ошибок, но при запуске бинарника сообщает: ОШИБКА СЕГМЕНТАЦИИ*/ //Что делать???


1) осилить форматирование


#include <stdio.h>

int main (void) {

char ch;
FILE *fp = fopen("1.txt", "r");

if (!fp) return -1; /* выход из программы т.к. файла нет */


do { .. ну и то что там дальше...

Sylvia ★★★★★
()
Ответ на: комментарий от jkcool

спорим, что нет? :)

~/test :) % gcc test.c -o test
~/test :) % ./test 
zsh: bus error  ./test
~/test :( % touch 1.txt
~/test :) % ./test     
~/test :) % cat test.c
#include<stdio.h> 
main() { 
FILE *fp; 
fp=fopen("1.txt","rt");
char ch; 
fclose(fp); 
}
~/test :) % 

Pi ★★★★★
()
Ответ на: комментарий от jkcool

>Нет, 1.txt уже существует

Если файл 1.txt существует в текущем каталоге, то этот код (не смотря на кривизну) работает.

Demon37 ★★★★
()
Ответ на: комментарий от jkcool

1 ) ФС в юникс различают регистр символов

1.TXT и 1.txt - разные файлы


2) файл должен быть в текущем каталоге, или попробуйте указывать полный путь в аргументах к fopen("path", "mode")

Sylvia ★★★★★
()
Ответ на: комментарий от jkcool

>как в linux находясь в рабочем каталоге (дома) запустить прогу? ее bash принимает как свою команду (

./название_программы

Demon37 ★★★★
()
Ответ на: комментарий от jkcool

Бред какой-то =) Я так и не понял в чем проблема.

ss85
()
Ответ на: комментарий от Sylvia

файл должен быть в текущем каталоге...и точка.

ss85
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.