Вопрос C Xcode

#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

Также, в будущем, пожалуйста, укажите, какую версию 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…