Я пытаюсь прочитать символы из файла (сделано) и подсчитать количество раз, когда отображается аргумент из командной строки. Когда я запускаю код снизу, я получаю следующую ошибку в моем терминале: «В файле, включенном в Fisier.c: 3: 0: /usr/include/string.h:144:12: note: expected 'const символ *», но аргумент типа 'полукокс' экстерна Int STRCMP (Const символ * __ s1, сопзИте полукокс * __ s2)"Сравните текст файла с argvc
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
int c, nr = 0;
char filename[30];
char ch;
char *ch2;
strcpy(ch2, argv[2]);
strcpy(filename, argv[1]);
FILE *file;
file = fopen(filename, "r");
if (file) {
do {
ch = fgetc(file);
if (feof(file))
break;
char *pChar = malloc(sizeof(ch));
strcpy(pChar[0], ch);
if (strcmp(ch2, pChar[0]))
nr++;
} while(1);
fclose(file);
}
printf("%d", nr);
return 0;
}
'Pchar [0]' имеет тип полукокса, но 'strcmp' ожидает типа константный символ *. возможно, вы хотели передать 'pChar' вместо этого? – UnholySheep
Я пробовал это раньше, это результат: "/usr/include/string.h:129:14: note: expected 'const char * __restrict__', но аргумент имеет тип 'char' extern char * strcpy (char * __ ограничивать __dest, const char * __ ограничивать __src) « –
a) всегда проверять' argc' и b) у вас есть утечка памяти из 'malloc', поскольку вы постоянно переписываете указатель, c) вы выделили только 1 байт памяти для копирования строки (предполагаемого намерения) в. –