C char para string (passando char para strcat())
Pergunta
Meu problema está convertendo um char para string que eu tenho que passar para strcat () um char para anexar a uma string, como posso fazer?obrigado!
#include <stdio.h>
#include <string.h>
char *asd(char* in, char *out){
while(*in){
strcat(out, *in); // <-- err arg 2 makes pointer from integer without a cast
*in++;
}
return out;
}
int main(){
char st[] = "text";
char ok[200];
asd(st, ok);
printf("%s", ok);
return 0;
}
Solução
O aplicativo do SharePoint precisa de permissões para a lista usada na coluna de pesquisa, bem como a lista que você está consultando ou só pode recuperar o ID e não o nome.
Outras dicas
strcat
não anexará caracteres únicos. Em vez disso, é preciso um const char*
(uma string completa no estilo C) que é anexado à string no primeiro parâmetro. Portanto, sua função deve ler algo como:
char *asd(char* in, char *out)
{
char *end = out + strlen(out);
do
{
*end++ = *in;
} while(*in++);
return out;
}
O loop do Do-While incluirá o terminador zero, necessário no final das cordas do estilo C. Verifique se a sua string externa é inicializada com um terminador zero no final ou este exemplo falhará.
E como um aparte: pense sobre o que *in++;
faz. Irá incrementar in
e desreferente, que é o mesmo que in++
, então o *
é inútil.
Olhando seu código, posso fazer algumas dicas em relação a ele, isso não é uma crítica, aceite isso com uma pitada de sal que permitirá que você seja um programador C melhor:
- Nenhum protótipo de função.
- Uso incorreto de ponteiros
- Lidando com o
strcat
função é usada incorretamente. - Exagerar - não há necessidade do
asd
funcionar em si! - Uso de lidar com variáveis notavelmente
char
matriz que não foi inicializada corretamente.
#include <stdio.h> #include <string.h> int main(){ char st[] = "text"; char ok[200]; ok[0] = '\0'; /* OR memset(ok, 0, sizeof(ok)); */ strcat(ok, st); printf("%s", ok); return 0; }
Espero que isso ajude, cumprimentos, Tom.
Para converter um personagem em uma string (NULL Terminated), você pode simplesmente fazer:
char* ctos(char c)
{
char s[2];
sprintf(s, "%c\0", c);
return s;
}
Exemplo de trabalho: http://ideone.com/cfav3e