Я только что начал C, поэтому этот вопрос может быть глупым. Любые мысли о том, почему я продолжаю получать это предупреждение о компиляции?Указатель без литья?
Вопрос: Напишите функцию escape(s,t)
, которая преобразует символы, такие как символ новой строки и табуляции в видимых управляющих последовательностей, как \n
и \t
, как она копирует строку t
в s
.
3-2.c:37:11: warning: assignment makes integer from pointer without a cast [enabled by default]
3-2.c:38:9: warning: assignment makes integer from pointer without a cast [enabled by default]
3-2.c:42:11: warning: assignment makes integer from pointer without a cast [enabled by default]
3-2.c:43:9: warning: assignment makes integer from pointer without a cast [enabled by default]
Это код:
int get_line (char input[], int max_size);
void escape(char s[], char t[]);
main() {
int length, l, i;
char line[MAX], t[MAX];
while ((length = get_line (line, MAX)) > 0)
escape (line, t);
printf ("%s", t);
}
int get_line (char input[], int max_size) {
int i, c;
for (i = 0; i < max_size-1 && (c = getchar()) != EOF && c != '\n'; ++i)
input[i] = c;
if (c == '\n') {
input[i] = c;
++i;
}
input[i] = '\0';
return i;
}
void escape(char s[], char t[]) {
int i;
for (i= 0; s[i] != '\0'; ++i) {
switch(s[i]) {
case '\t' :
//This is where i get the warning.
t[i++] = "\\";
t[i] = "t";
break;
case '\n' :
t[i++] = "\\";
t[i] = "n";
default :
t[i] = s[i];
break;
}
}
}
Скажите 't [i ++] = '\\';' и т. Д. –
Также 'input [i] = (char) c;' в 'get_line()'. – trojanfoe
Спасибо Kerrek !! PS Trojonfoe casting, по-видимому, не требуется. В любом случае спасибо. –