FILE *fd;
if (fd=fopen(fileName,"r") == NULL)
{
printf("File failed to open");
exit(1);
}
Это - фрагмент кода. Когда я компилирую его с gcc, я получаю соблюдающее предупреждение:-
warning: assignment makes pointer from integer without a cast
Когда я поместил fd=fopen (argv[2], "r") в скобках, проблема решена..
Я не могу понять, где я преобразовываю целое число в указатель, когда скобки не помещаются.
Из-за правил приоритета оператора. Условие интерпретируется как FD = (FOPEN (имя файла, «R») == NULL)
Отказ Результат ==
является целым числом, FD
является указателем, таким образом, сообщение об ошибке.
Рассмотрим «расширенную» версию вашего кода:
FILE *fd;
int ok;
fd = fopen(fileName, "r");
ok = fd == NULL;
// ...
, вы ожидаете, что последняя строка будет интерпретировать как (OK = FD) == NULL
, или OK = (FD = = Null)
?
Приоритет оператора равенства выше, чем оператор назначения. Просто измените свой код:
FILE *fd;
if ((fd=fopen(fileName,"r")) == NULL)
{
printf("File failed to open");
exit(1);
}
==
имеет более высокий приоритет, чем =
, поэтому он сравнивает результат Fopen ()
- NULL
, затем присваивает, чтобы FD
.
Вам нужен скобки вокруг задания:
if ((fd=fopen(fileName,"r")) == NULL)
....
Модуль подпроцесса должен предоставить то, что вы хотите, если вы кормите подпроцесс путь к браузеру. Обратите внимание, что вам нужен Python 2.4 или более позднее, чтобы использовать подпроцесс, но это распространено в наши дни.
Обновить - код для метода для вызова Chrome, при открытии A, прошедший в URL:
def startChrome(url):
""" Calls Chrome, opening the URL contained in the url parameter. """
executable = 'path-to-chrome' # Change to fit your system
cmd = ' '.join([executable, url])
browswer_proc = subprocess.Popen(cmd, shell=True)
-121--5044714- == имеет более высокий приоритет, чем =.
Вы сделали следующее?
#include <stdio.h>
Без этого компилятор предполагает, что все функции возвращают int
.