xakire 0 Denunciar post Postado Outubro 22, 2009 Desenvolver um programa que leia 3 strings com 50 posições e desenvolver os seguintes itens: ler as 3 strings; vericar queal é a maior string e apresentar; agrupar as 3 strings em um única string (não utilizar a função strcat). Parte do código tah pronto, mas como faço para concatenar as strings sem utilizar strcat.. http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif #include "stdafx.h" #include "stdio.h" #include "string.h" int main(int argc, char* argv[]) { char ch1[50],ch2[50],ch3[50]; int tam1,tam2,tam3; gets(ch1); gets(ch2); gets(ch3); tam1=strlen(ch1); tam2=strlen(ch2); tam3=strlen(ch3); if(tam1> tam2 && tam1 > tam3) { printf("A maior string digitada e %s:\n",ch1); } else if(tam2 > tam1 && tam2> tam3) { printf("A maior string digitada e %s:\n",ch2);; } else { printf("A maior string digitada e %s:\n",ch3); } Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Outubro 22, 2009 Concatenar ?? Ueh printf("String - %s%s%s", ch1, ch2, ch3); Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 22, 2009 Acho que então isso vai concatenar as strings! #include <iostream> using namespace std; string maiorString(string str1, string str2, string str3){ string retorno; if ((str1.length()>str2.length()) && (str1.length()>str3.length())) retorno.append(str1); else if (str2.length()>str3.length()) retorno.append(str2); else retorno.append(str3); return retorno; } int main(){ string str1, str2, str3, strmaior, strfinal; cout << "Primeira string: "; getline(cin, str1); cout << "Segunda string: "; getline(cin, str2); cout << "Terceira string: "; getline(cin, str3); cout << "Maior string: " << maiorString(str1, str2, str3) << endl; strfinal.append(str1); strfinal.append(str2); strfinal.append(str3); cout << "Tudo numa string so: " << strfinal << endl; return 0; } []s Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel... 0 Denunciar post Postado Outubro 22, 2009 Caríssimo, Acho que você quer algo assim: #include <stdio.h> #include <stdlib.h> #include <string.h> char * concat_3strings(char *str1, char *str2, char *str3); int main(int argc, char *argv[]) { char str1[]="Linux"; char str2[]="the"; char str3[]="best..."; printf("%s\n",concat_3strings(str1,str2,str3)); return 0; } char * concat_3strings(char *str1, char *str2, char *str3) { /* Inicia com 0 as variaveis que vão conter o tamanho das strings */ int len_strg1=0; int len_strg2=0; int len_strg3=0; int tam_total=0; //Inicia a variavel que vai conter o tamanho total com 0 int i,j; // Contadores char *new_strg; //Nova string que contera as strings concatenadas /* Pega o tamanho das strings */ len_strg1=strlen(str1); len_strg2=strlen(str2); len_strg3=strlen(str3); tam_total=len_strg1+len_strg2+len_strg3; tam_total=tam_total+1; //Adiciona mais um pois temos que colocar o '\0' para indicar o final da string new_strg=(char *)malloc(tam_total*(sizeof(char))); //Alocamos memoria pra nova string j=0; for(i=0;i<len_strg1;i++) //Lemos a string 1 e colocamos na nova string { new_strg[j]=str1[i]; j++; } for(i=0;i<len_strg2;i++) //Lemos a string 2 e colocamos na nova string { new_strg[j]=str2[i]; j++; } for(i=0;i<len_strg3;i++) //Lemos a string 3 e colocamos na nova string { new_strg[j]=str3[i]; j++; } new_strg[j]='\0'; // Indicamos o final da string com '\0' return new_strg; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 22, 2009 Tem outro modo, mas usando ponteiros: #include <string.h> #include <stdio.h> #include <stdlib.h> int main() { char *strs[] = {"string1", "string2 ==== 000000 77777", "string3 ------"}; int n_bytes = 0; for(int i=0;i<3;i++) n_bytes+=strlen(strs[i]); char *nova = (char*)malloc(n_bytes); if (nova == NULL) return 1; int tamanho; for(int i=0;i<3;i++){ tamanho = (i == 0)? 0: strlen(nova); memmove(&nova[tamanho] , strs[i], strlen(strs[i])*sizeof(char)); } printf("%s\n", nova); free(nova); nova = NULL; return 0; } Compartilhar este post Link para o post Compartilhar em outros sites