filmov
tv
Convert String List to Char List in c and c++ 21

Показать описание
Shows how to #convert a #string #list #data #structure into a #char list and vice versa. Shows how to read an input file using string list and write into an output file using char #list in c plus plus and c.
c code:
#include<stdio.h>
struct List
{
char *data;
struct List *next;
};
typedef struct List list;
int main()
{
list *iter, *elements, *node;
elements = iter = node = NULL;
char line[25];
for (;fgets(line, sizeof(line), input_file)!= NULL;)
{
//iter = malloc(sizeof(list));
//iter->data = strdup(line);//
//iter->next = NULL;
//if (elements == NULL)
//{
// node = elements = iter;
//}
//else
//{
// node = node->next = iter;
//}
for (size_t i = 0; i < strlen(line); i++)//stops where line finishes
{
iter = malloc(sizeof(list));
iter->data = malloc(sizeof(char)); //added to use pointers
*iter->data = line[i]; //use of pointer here
iter->data[1] = '\0';//convert char to string
iter->next = NULL;
if (elements == NULL)
{
node = elements = iter;
}
else
{
node = node->next = iter;
}
}
}
for (iter = elements; iter; iter = iter->next)
{
printf("%s\n", iter->data); //for string output
fprintf(output_file, "%s\n", iter->data);//for string output
//printf("%c\n", *iter->data); //
//fprintf(output_file, "%c\n", *iter->data);//for string output
}
free(iter);
if (input_file)
{
fclose(input_file);
fclose(output_file);
}
getch();
return 0;
}
c++ code:
#include <iostream> //for cout
#include <fstream> // for ofstream/ifstream
#include <string> //for << and getline
#include<list> //for lists
struct List
{
std::string data;
List *next;
};
typedef struct List list;
int main()
{
//list *iter, *elements, *node;
//elements = iter = node = NULL;
std::list<std::string> elements;
//std::list<char> elements;
std::string line;
for (; std::getline(input_file, line);)
{
//iter = new List;;
//iter->data = line;
//iter->next = NULL;
//if (elements == NULL)
//{
// node = elements = iter;
//}
//else
//{
// node = node->next = iter;
//}
{
//iter = new List;;
////iter->data = line[i];//char
//iter->data = std::string(1, line[i]);//convert char to string
//iter->next = NULL;
//if (elements == NULL)
//{
// node = elements = iter;
//}
//else
//{
// node = node->next = iter;
//}
}
}
//for (iter = elements; iter != NULL; iter = iter->next)
//{
// std::cout << iter->data << std::endl;
// output_file << iter->data << std::endl;
//}
{
std::cout << (*iter) << std::endl;
output_file << (*iter) << std::endl;
}
//delete iter;
if (input_file)
{
}
return 0;
}
#cplusplus #c #tutorial
c code:
#include<stdio.h>
struct List
{
char *data;
struct List *next;
};
typedef struct List list;
int main()
{
list *iter, *elements, *node;
elements = iter = node = NULL;
char line[25];
for (;fgets(line, sizeof(line), input_file)!= NULL;)
{
//iter = malloc(sizeof(list));
//iter->data = strdup(line);//
//iter->next = NULL;
//if (elements == NULL)
//{
// node = elements = iter;
//}
//else
//{
// node = node->next = iter;
//}
for (size_t i = 0; i < strlen(line); i++)//stops where line finishes
{
iter = malloc(sizeof(list));
iter->data = malloc(sizeof(char)); //added to use pointers
*iter->data = line[i]; //use of pointer here
iter->data[1] = '\0';//convert char to string
iter->next = NULL;
if (elements == NULL)
{
node = elements = iter;
}
else
{
node = node->next = iter;
}
}
}
for (iter = elements; iter; iter = iter->next)
{
printf("%s\n", iter->data); //for string output
fprintf(output_file, "%s\n", iter->data);//for string output
//printf("%c\n", *iter->data); //
//fprintf(output_file, "%c\n", *iter->data);//for string output
}
free(iter);
if (input_file)
{
fclose(input_file);
fclose(output_file);
}
getch();
return 0;
}
c++ code:
#include <iostream> //for cout
#include <fstream> // for ofstream/ifstream
#include <string> //for << and getline
#include<list> //for lists
struct List
{
std::string data;
List *next;
};
typedef struct List list;
int main()
{
//list *iter, *elements, *node;
//elements = iter = node = NULL;
std::list<std::string> elements;
//std::list<char> elements;
std::string line;
for (; std::getline(input_file, line);)
{
//iter = new List;;
//iter->data = line;
//iter->next = NULL;
//if (elements == NULL)
//{
// node = elements = iter;
//}
//else
//{
// node = node->next = iter;
//}
{
//iter = new List;;
////iter->data = line[i];//char
//iter->data = std::string(1, line[i]);//convert char to string
//iter->next = NULL;
//if (elements == NULL)
//{
// node = elements = iter;
//}
//else
//{
// node = node->next = iter;
//}
}
}
//for (iter = elements; iter != NULL; iter = iter->next)
//{
// std::cout << iter->data << std::endl;
// output_file << iter->data << std::endl;
//}
{
std::cout << (*iter) << std::endl;
output_file << (*iter) << std::endl;
}
//delete iter;
if (input_file)
{
}
return 0;
}
#cplusplus #c #tutorial