#c #c
#c #c
Вопрос:
#include <stdio.h>
int length(char s)
{ int i;
for(i=0;s[i]!='';i )
{}
printf("%d",i);
}
int main()
{
char s[100];
scanf("%s",s);
length(s);
}
Я пытаюсь написать простую программу, которая печатает количество символов в строке без использования strlen, но я получаю эти сообщения об ошибках, которые на данный момент выходят за рамки моего понимания.
Комментарии:
1.
int length(char s)
должно бытьint length(char s[100])
, вы передаете массив, но собираете его вchar
2. Если вы объявляете функцию для возврата int, вы должны вернуть int.
3.
int length(char s)
->void length(char const* s)
Ответ №1:
#include <stdio.h>
int length(char s[])
{ int i;
for(i=0;s[i]!='';i )
{}
printf("%d",i);
}
int main()
{
char s[100];
scanf("%s",s);
length(s);
}`
Нашел свою ошибку
Комментарии:
1.
int length(char s[])
также является ошибкой. если вы не собираетесь возвращать значение, оно должно бытьvoid length(char s[])
илиvoid length(const char* s)
.2. Или добавьте a
return i;
, что также сделало бы его законным.3. я обычно возвращаю 0 в конце
Ответ №2:
Поскольку вы инициализируете свою функцию как Integer
, вы должны возвращать любой аргумент в функции length
. Но также вы печатаете что-то вроде функции длины, тогда вы должны использовать функцию как void
#include<stdio.h>
void length(char *s)
{
int i;
for(i=0;s[i]!='';i ){}
printf("%d",i);
}
int main()
{
char s[100];
scanf("%s",s);
length(s);
return 0;
}
Кроме того, вы передаете только массив символов и запускаете цикл для символа, поэтому он показывает исключение. Если вы хотите, чтобы ваша функция была целочисленной, передайте массив символов, например,
#include<stdio.h>
int length(char *s)
{
int i;
for(i=0;s[i]!='';i ){}
printf("%d",i);
}
int main()
{
char s[100];
scanf("%s",s);
length(s);
return 0;
}