Я переписал свою предыдущую программу, и я хочу изменить * грязный на ** грязный. Не могли бы вы дать мне совет? Вот мой код:Как изменить указатель на указатель на указатель?
void clean(char *dirty)
{
int i = 0, j = 0;
char *temp;
temp = strdup(dirty);
if(NULL == temp)
{
printf("strdup(), failed");
return;
}
while(i < strlen(temp))
{
if(isalpha(temp[i]) || isspace(temp[i]) || temp[i] == '?'
|| temp[i] == '.' || temp[i] == '!' || temp[i] == ',')
{
dirty[j] = temp[i];
j++;
}
i++;
}
dirty[j] = '\0';
free(temp);
}
часть измененного основные(), я имел некоторые проблемы и вместе с моим другом, мы создали это:
int main(int argc, char** argv)
{
FILE* fp;
char** tab;
int i = 0;
int lines = 0;
int length = 10;
if(argc != 2)
{
printf("Incorrent syntax! Use ./name_of_program input_file\n");
return 1;
}
if(!(fp = fopen(argv[1],"r")))
{
printf("Could not open the file! Please try again!\n");
return 2;
}
tab = (char**)malloc(length*(sizeof(char*)));
if(!tab)
{
printf("Could not allocate memory!\n");
free(tab);
return 3;
}
while(!feof(fp))
{
tab[i] = getNumber(fp);
if(i >= length)
{
length += 10;
tab = (char**)realloc(tab, sizeof(char*));
if(tab == NULL)
{
free(tab);
return 5;
}
}
if(tab[i] == NULL)
{
printf("Incorrect character in the infile! Terminating\n");
free(tab);
return 4;
...
Что вы хотите сделать с помощью 'char ** dirty', который вы не можете сделать с' char * dirty'? – jxh
Я изменил main(), и теперь он требует ** грязного. Просто для практики. – all0star
Что вы изменили в main.You просто изменение строки просто исключение номеров и некоторые другие символы в функции для этого вам просто нужен один указатель. если вам нужно сделать то же самое для группы строк за раз, вам нужен двойной указатель или массив указателей. – Gangadhar