Jump to content
Fórum Script Brasil
  • 0

Qual a maneira mais simple para se chegar ao resultado?


Felipe_JDES

Question

preciso resolver essa questão qual a maneira mais simples para fazer esse metodos em linguagem C?

Crie a função stringAddall que recebe um ponteiro para uma string como primeiro argumento e um

vetor de caracteres como segundo argumento. A função deve adicionar todos os caracteres do vetor de caracteres no final da string dado como primeiro argumento. O protótipo da função deve ter o seguinte formato:

Void stringAddAll(String *s, char a[], int n){

//implementação aqui

}

observe que n é a quantidade de caracteres no vetor a.

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0
preciso resolver essa questão qual a maneira mais simples para fazer esse metodos em linguagem C?

Crie a função stringAddall que recebe um ponteiro para uma string como primeiro argumento e um

vetor de caracteres como segundo argumento. A função deve adicionar todos os caracteres do vetor de caracteres no final da string dado como primeiro argumento. O protótipo da função deve ter o seguinte formato:

Void stringAddAll(String *s, char a[], int n){

//implementação aqui

}

observe que n é a quantidade de caracteres no vetor a.

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

typedef struct TChar {

char value;

struct TChar *next;

} Char;

typedef struct TString {

Char *first;

int size;

} String;

String* newString(void){

String *s = (String*) malloc (sizeof(String));

s->size = 0;

s->first = NULL;

return s;

}

void StringWriting(String *str){

Char *tmp = str->first;

while (tmp != NULL) {

printf("%c", tmp->value);

tmp = tmp->next;

}

printf("\n");

}

void StringAppend(String *str, char c) {

if (str->size == 0) {

str->first = (Char*) malloc (sizeof(Char));

str->first->value = c;

str->size++;

} else {

Char *tmp = str->first;

while (tmp->next != NULL) {

tmp = tmp->next;

}

Char *novo = (Char*) malloc (sizeof(Char));

novo->value = c;

novo->next = NULL;

tmp->next = novo;

str->size++;

}

}

void StringReadLine(String *str) {

char c = getchar();

while (c != '\n'){

StringAppend(str, c);

c = getchar();

}

}

void StringAddAll(String *s, char a[], int n){

int i;

for(i=0; i<n; i++){

StringAppend(s, a);

}

s->size = s->size+n;

}

int main(){

String *str = newString();

StringReadLine(str);

char a[] = {", Ola"};

StringAddAll(str, a, strlen(a));

StringWriting(str);

}

Link to comment
Share on other sites

  • 0
#include <stdio.h>

typedef unsigned char String;

void stringAddAll(String *s, char *a /* equivalente a a[]*/, int n)
{
    while(*s != 0)
        s++;
    
    while(n--)
        *s++ = *a++;
    *s = 0;
}

int main(int argc, char **argv)
{
    String str[256] = "hello";
    char a[] = " world!";
    
    stringAddAll(str, a, 7);
    puts((char*)str);
    return 0;
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...