#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 запускают оболочку с конца печатной строки…