일부 연습 프로그램을 작성 중이며 아래 함수에서 문제가 발생했습니다. 의도 한대로 char 배열이 아닌 정수를 반환합니다. 이 코드는 사용자가 먼저 문자열을 입력하고 제거하려는 문자를 입력하는 것을 의미합니다. squeez 함수는 양쪽 모두를 받아서 주어진 문자가없는 문자열을 출력합니다. 함수가 char 대신 int를 반환합니다.
현재 내 기능은 경고를 제공합니다수익률은 [기본적으로 활성화] 캐스트
나는 기능이 유형은이 2 오류를 표시 B/C 'INT'를 반환 알고없이 포인터의 정수를 만든다 :
형식 '% s'은 (는) '의 char *'형식의 인수를 기대하지만, 인수 2 'INT'를 입력있다 [-Wformat =]
/* Squeeze Function */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char squeez(char s[], int c)
{
int i, j;
for (i = j = 0; s[i] != '\0'; i++)
{
if (s[i] != c)
{
s[j++] = s[i];
}
printf("%c %d", s[i], c);
}
printf("%s", s);
s[j] = '\0';
return s;
}
int main(void)
{
int i, c;
char str[10];
for (i = 0; (c = getchar()) != '\n'; ++i)
{
str[i] = c;
}
c = getchar();
printf("%s", squeez(str, c));
return EXIT_SUCCESS;
}
모든 모든 도움을 주시면 감사하겠습니다 감사합니다!
간단히 설명해 주시겠습니까? – user1234567878787
return이라고 말하면 컴파일러는 문자열 s에 포인터를 반환하지만 문자열 자체는 반환하지 않습니다. 하지만 당신의 함수는 char의 리턴 타입을 기대하고 있으므로 char 포인터를 char로 변환합니다. 반환 유형을 변경하면 문제가 해결됩니다. – sumithdev