C: Указатели. Превращение в указатель с целого числа различного размера

Я нуждаюсь в помощи, стараюсь создавать функцию, которая получает маршрут файла, обнаружьте бруски, и извлеките имя того же самого.

Для этого, я использую функцию strcmp (s1,s2), чтобы знать, - брусок или нет ли настоящий символ.

Вопрос, - что, составив: "Превращение в указатель с целого числа различного размера". в линии 12:

if(strcmp((char*)*ruta_fue,"/")==0)

Тогда я не знаю, что он значит.

Моя первая версия пошла:

if(strcmp((*ruta_fue,"/")==0)

но составитель: Шаг аргумента 1 в strcmp верьте в указатель с целого числа без превращения.

Вопрос: Как я соглашаюсь на настоящий символ с указателя char*?

Программа:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>


char* nombreFichero(char* ruta_fue){
char* nombre = malloc(sizeof(char)*strlen(ruta_fue));
char* origen = nombre;
int i;
for(i=0;i<strlen(ruta_fue);i++){

if(strcmp((char*)*ruta_fue,"/")==0){
    if(i!=strlen(ruta_fue)-1){
        free(nombre);
        nombre = origen;
        ruta_fue++;
    }
}else{
    *nombre=*ruta_fue;
    nombre++;
    ruta_fue++;
}
}
nombre=origen;
return nombre;
}

int main(int argc, char * argv[]){
char * ruta;
if(argc!=2){
printf("Error el uso es: nombreFichero ruta\n");
return -1;
}
ruta =(char*) argv[1];
printf("El nombre del fichero es: %s\n",nombreFichero(ruta));
}

Также он был бы благодарен, если кто-то объясняет мне, как вводить код простого способа, потому что я думаю, что раздвигать каждую линию с 4 типами места не идеальное.

Спасибо.

4
задан 26.03.2016, 21:44
1 ответ

*ruta_fue* он типа char (что является тем, чего он требует strcmp) и ты происходишь с ним (char *)*ruta_fueа именно:

1- ruta_fue он содержит адрес цепи, давайте помещать, что он 0x123456.

2-С *ruta_fue ты получаешь char хранение в положении 0 из цепи. Давайте помещать, что он a.

3-С (char *)*ruta_fue ты используешь char из положения 0 из цепи как адрес цепи, а именно ты переходишь с ним в strcmp цепь, хранившаяся в 0x40 (стоимость Американский стандартный код обмена информацией 'в''). Излишне говорить, что ты получишь мусор или ошибку сегментации.

То, что ты хочешь, он состоит в том, чтобы сравнивать просто, если два символа равны: ruta_fue[0] == '/'

1
ответ дан 24.11.2019, 14:41