#c #xcode
#c #xcode
Вопрос:
Я пытаюсь передать аргументы в командную строку в xCode. Я просмотрел эту проблему и обнаружил, что мне нужно установить в рабочем каталоге путь, в котором находится файл. Также я должен добавить аргументы на вкладку аргументы в project- edit activeexecutable. Я также сделал это.
Я добавил michael.txt дважды.
/* This file is saved as readtext.c, compiled as readtext */
#include <stdio.h>
void main(int argc, char *argv[])
{
FILE *fin;
char buffer[100];
printf("Michael Mazurn");
if (argc != 2) {printf("Usage: %s filenamen", argv[0]); exit(1);}
fin = fopen(argv[1], "r");
if (!fin) {printf("Unable to open %sn", argv[1]); exit(1);}
while (fgets(buffer, 99, fin)) fputs(buffer, stdout);
fclose (fin);
}
Я продолжаю доходить до того, что передаются не 2 аргумента. Я также запустил небольшую тестовую программу, и она продолжает возвращать, что у меня передается только 1 аргумент, независимо от того, сколько я добавляю. Любая помощь?
Комментарии:
1. Если вы запускаете программу вручную вне xcode и предоставляете аргументы, работает ли она так, как ожидалось?
2. ДА. Если я запускаю его вне xcode, он выполняется, как ожидалось.
Ответ №1:
argv[0]
(путь к исполняемому файлу) учитывается в argc
, поэтому, если вы добавите michael.txt
дважды, argc
будет 3. Здесь приведено немного более длинное описание. (В общем, когда что-то ведет себя неправильно, как это, либо используйте отладчик для проверки значений всех переменных, либо распечатайте их.)
Убедитесь, что оба аргумента проверены и находятся в отдельных строках, вот так:
Также, в будущем, пожалуйста, укажите, какую версию Xcode вы используете; Я думаю, из вашего описания это 3.x, так что именно так я ответил на вопрос. Пользовательский интерфейс довольно существенно различается в разных версиях.
Комментарии:
1. Извините, что я использую Xcode 3.2. У меня есть аргументы, проверенные в отдельных строках, как показано на рисунке. Я все еще получаю ответ, что передается 1 аргумент, независимо от того, сколько я передаю, используя этот небольшой фрагмент кода для тестирования:
2. #включить <stdio.h> недействительные showargs(int, char **); #определить STAND_ALONE 1 #ifdef STAND_ALONE int main (int argc, char *argv[]) { printf(«Майкл Мазур tessst n»); showargs(argc, argv); return (0); } #endif аннулировать showargs(int argc, char *argv[]) { int i; printf(«Имя программы: %s n», argv[0]); printf(«Есть аргументы%dn»,argc); для (i=1; i<argc; i ) printf(«-. %sn»,i, argv[i]); }
3. Не могли бы вы опубликовать свой проект где-нибудь (просто заархивируйте каталог и опубликуйте его)? Возможно, вы столкнулись с непонятной ошибкой Xcode…