2016-01-28 2 views
-1

Привет, в основном, что моя программа предназначена для того, чтобы сделать, когда пользователь вводит строку из командной строки, она будет печатать слово и размер.У меня проблема с печатью длины строки из командной строки без использования strlen?

Например

./commandline hello world 

Выход:

привет

мир

То, что я пытаюсь сделать, это добавить метод, который будет печатать его длину без используя strlen, поэтому выход должен быть длиной 10 для Пример выше.

Это мой код в виду, я новичок в c.

int main(int args, char *argv[]){ 
    for(int i =1; i <args; i++){ 
     printf("%s\n", argv[i]); 
     size_t(argv[i]); 
    } 
    printf("%d\n", args -1); 
} 
size_t string_length(char *argv[]){ 
    int length = 0; 
    while(argv[length]!='\0') 
    { 
     length++; 
     printf("%i\n", length); 
    } 
    return 0; 
} 

Моя программа не печатает длину только печатает введенную строку и размер.

+0

Добро пожаловать на переполнение стека! Похоже, вам, возможно, потребуется научиться использовать отладчик для выполнения вашего кода. С хорошим отладчиком вы можете выполнить свою программу по очереди и посмотреть, где она отклоняется от ожидаемого. Это важный инструмент, если вы собираетесь заниматься программированием. Дальнейшее чтение: [Как отлаживать небольшие программы] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/). –

+0

Этот код не должен компилироваться, а тем более работать. –

ответ

1
for(int i =1; i <args; i++){ 
    printf("%s\n", argv[i]); 
    size_t(argv[i]); 
} 
printf("%d\n", args -1); 

Здесь вы не называя вашу функцию в любом месте. Ваша программа просто печатает аргументы и их количество. size_t(argv[i]); просто отливает argv[i] в тип под названием size_t. Конечно, это не то, что вы хотите. Замените его на string_length(argv[i]);. Обратите внимание, что вам лучше изменить тип первого аргумента этой функции.

Более того, вы должны вернуть length в свою string_length функцию.

size_t string_length(char *arg){ 
    size_t length = 0; 
    while(arg[length]) 
    { 
     length++; 
    } 
return length; 
} 
0

попробовать этот

size_t string_length(char *argv[]); 
int main(int args, char *argv[]){ 
    for(int i =1; i <args; i++){ 
     printf("%s\n", argv[i]); 
     string_length(argv[i]); 
    } 
    printf("%d\n", args -1); 
} 

size_t string_length(char *argv[]){ 


    int length = 0; 
    while(argv[length]!='\0') 
    { 
     length++; 

    } 
    printf("%i\n", length); 
    return length; 

}