como converter de forma simples string para char

C#

Lógica de programação

Parallel Programming

C++

Programação

16/04/2022

não consigo converter e utilizar uma variavel que contem o caminho de extração do arquivo que eu quero dar administrador...
eu já tentei varias coisas mais não consegui, tentei alguns métodos de trasformar string em char e etc, mas não funcionou
só quero que o conteúdo da variavél "C" seja utilizado de forma correta, sou inicianta na programação, alguém pode me dar uma ajuda?

#include<stdio.h>
#include<windows.h>
#include<shellapi.h>
#include<string.h>
#include <locale.h>

int main(){

///variaveis

char c[] = "C:\";
char user[200] = "";
char c2[] = "Users\";
scanf("%s", user);



strcat(c, c2);
strcat(c, user);
strcat(c, "\\Documents\");
strcat(c, "teste.exe");


char cchar = (char)(c);

printf("%s",cchar);
//concatena tudo
///roda programa como administrador


char*aplication = "%s", c;
ShellExecute(NULL, "runas", aplication, NULL, NULL, SW_SHOWDEFAULT);
}
Empty

Empty

Curtidas 0

Respostas

Stella Oliveira

Stella Oliveira

16/04/2022

Aparentemente você está utilizando JAVA, em Java, uma maneira simples de converter uma String em um array de char é usando o método toCharArray() da classe String. Aqui está um exemplo:

String minhaString = "exemplo";
char[] meuArrayChar = minhaString.toCharArray();


O método toCharArray() retorna um array de caracteres que representa a String. Neste exemplo, a variável meuArrayChar conterá os caracteres {'e', 'x', 'e', 'm', 'p', 'l', 'o'}.

Também é possível converter uma String em um char individualmente usando o método charAt() da classe String. Aqui está um exemplo:

String minhaString = "exemplo";
char meuChar = minhaString.charAt(0);


String minhaString = "exemplo";
char meuChar = minhaString.charAt(0);

O método charAt() retorna o caractere na posição especificada pelo índice passado como parâmetro. Neste exemplo, a variável meuChar conterá o caractere 'e', que é o caractere na posição 0 da String.
GOSTEI 0
Arthur Heinrich

Arthur Heinrich

16/04/2022

Acho que você precisa dar um passo atrás para entender como mapear a memória.

O tipo char armazena apenas 1 caractere (8 bits).
Ao utilizar char[] estamos criando um char array. Uma espécie de vetor contendo caracteres que formam uma string.

Sempre que temos uma string, precisamos de um mecanismo para indicar o fim da string e existem duas maneiras de se fazer isso.

No padrão C, as strings são terminadas por um caractere adicional de código 0 (zero). Por isso são popularmente chamadas de stringZ.

Outras linguagens, como o Pascal, utilizavam originalmente uma string composta de um primeiro caractere, cujo código representa o tamanho da string e, na sequência, a relação dos caracteres. Por ser iniciada pelo tamanho, passou a ser conhecida como Lstring.

Na Lstring, uma vez que o tamanho é armazenado através do primeiro caractere, as strings são limitadas de 0 a 255 caracteres.

Depois, foram criados modelos muito mais sofisticados para armazenar strings.

O Delphi, por exemplo, utiliza um tipo String híbrido. Ele é um ponteiro que aponta para o primeiro caractere de uma stringZ. Porém, nos 12 bytes anteriores ao primeiro caractere, existem 3 inteiros de 32 bits. Uma para indicar o número de caracteres, outro para indicar o tamanho do buffer reservado para armazenar a string e o terceiro para armazenar o número de variáveis que fazem referência ao valor armazenado em memória.

Com isto, além de não ser necessário varrer a string para saber seu tamanho, ao atribuir uma variável à outra A:=B;, apenas o ponteiro B é armazenado em A e o contador (reference counter) é incrementado, o que é muito mais eficiente do que copiar o conteúdo da string.

No seu caso, ao concatenar strings, precisa ver se a linguagem que você está utilizando redimensiona o buffer dinamicamente, ou se você precisa explicitamente alocar o espaço previamente. Do contrário, o texto concatenado pode invadir a memória de outras variáveis ou mesmo áreas não mapeadas, que podem causar erros.
GOSTEI 0
POSTAR