Программа C, возвращающая% с ответом

#c #gcc

#c #gcc

Вопрос:

Я пытаюсь вычислить длину строки с помощью функции. Я знаю, что есть предопределенная функция, но я хотел создать свою собственную. Но проблема здесь в том, что всякий раз, когда я запускаю этот код, он возвращает длину имени с%. Вот так:

 ~ >>> /home/******/Coding/strlen                                         
Enter your name ==> Example
The length of your name is 7% 
 

Я действительно смущен, почему это происходит. Пожалуйста, объясните мне, что не так с моим кодом… Я использую GCC версии 10.2.0

 /*String Length Using Function*/
#include <stdio.h>
int find_length(char[]);
int main()
{
    char name[20];
    int l;
    printf("Enter your name ==> ");
    scanf("%s",name);
    l = find_length(name);
    printf("The length of your name is %d",l);
    return 0;   
}
int find_length(char tempname[])
{
    int len=0, i;
    for(i = 0; tempname [i]!=''; i  )
    {
        len  ;
    }
    return len;
} 
 

Ответ №1:

Кажется, ваша оболочка добавляет % , чтобы сообщить вам, что ваша программа не напечатала символ новой строки в конце вывода.

Добавьте символ новой строки в свой вывод, чтобы предотвратить это.

     /* add n to print a newline character */
    printf("The length of your name is %dn",l);
 

Комментарии:

1. Какая оболочка это делает?

2. @NateEldredge Похоже, что это делает только ZSH. Кажется, что Dash и Bash запускают оболочку с конца печатной строки…