Transformati programul dat din C++ in C
Conditia:
Se introduc de la tastatură două texte prin două variabile de tip string. Se cere să se afişeze cuvintele comune
celor două texte, ştiind că două cuvinte pot fi separate prin unul sau mai multe spaţii. Exemplu: pentru
textele: Ion merge la peste şi Dan merge la Ion, se va afişa : Ion merge la.
Programul:
#include <iostream>
#include <sstream>
#include <string>
int main()
{
std::string sir1, sir2, cuvant1, cuvant2;
std::istringstream flux1, flux2;
std::cout << "Șir 1: ";
std::getline(std::cin, sir1);
std::cout << "Șir 2: ";
std::getline(std::cin, sir2);
flux1.str(sir1);
while (getline(flux1, cuvant1, ' ')) {
if (cuvant1.empty()) {
continue;
}
flux2.str(sir2);
while (getline(flux2, cuvant2, ' ')) {
if (cuvant2.empty()) {
continue;
}
if (cuvant1 == cuvant2) {
std::cout << cuvant1 << std::endl;
}
}
flux2.clear();
}
}
Răspunsuri la întrebare
Pentru a converti acest cod din C++ în C, va trebui să faceți câteva modificări. În C, anteturile <iostream> și <sstream> nu sunt disponibile, așa că va trebui să utilizați anteturile <stdio.h> și <string.h>. În plus, va trebui să înlocuiți tipul std::string cu tipul char* și să utilizați funcțiile strcpy și strcmp pentru a copia șiruri și, respectiv, a le compara.
Iată un exemplu despre cum ar putea arăta codul după ce a fost convertit în C:
#include <stdio.h>
#include <string.h>
int main()
{
char sir1[100], sir2[100], cuvant1[100], cuvant2[100];
printf("Șir 1: ");
fgets(sir1, sizeof(sir1), stdin);
printf("Șir 2: ");
fgets(sir2, sizeof(sir2), stdin);
char* flux1 = sir1;
while (sscanf(flux1, "%s", cuvant1) == 1) {
if (strcmp(cuvant1, "") == 0) {
continue;
}
char* flux2 = sir2;
while (sscanf(flux2, "%s", cuvant2) == 1) {
if (strcmp(cuvant2, "") == 0) {
continue;
}
if (strcmp(cuvant1, cuvant2) == 0) {
printf("%s\n", cuvant1);
}
}
}
}