C

22K

Solutions

13K

Contributors

C is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations. By design, C provides constructs that map efficiently to typical machine instructions, so it has found lasting use in applications that had formerly been coded in assembly language, including operating systems as well as various application software for computers ranging from supercomputers to embedded systems. It is distinct from C++ (which has its roots in C) and C#, and many later languages have borrowed directly or indirectly from C.

Share tech news, updates, or what's on your mind.

Sign up to Post

Some body c help me please,
0
 
LVL 2

Expert Comment

by:Juana Villa
Welcome to Experts Exchange!
You can ask your specific question here and experts will be notified and answer it the best they can.
0
Concerto Cloud for Software Providers & ISVs
LVL 5
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

I migrated an SSD to a larger SSD using Macrium Reflect.   Now there is a large amount of unallocated space on the larger SSD.   How can I expand the C volume to use this space?
0
Can we make our keyboard into a mini piano by using c language
0
Somewhere along the line, about when OOP came along, I was diverted into doing other things.  So, I lack the "cultural refinement" that must have come along with it.
I've written programs in C, C++, VBA, C#, and Fortran (of whatever recent vintage) but, I must admit, quit in starting on C# because there were all those class names that had no meaning for me.  I couldn't even debug an example program as a result!

I think I understand the general concepts - so that's not it.
It's the specifics that are elusive.
I've seen the same thing in VBA but seem to have been able to get things done.  It was sort of like "programming by example" as in "copy & paste".

I've researched it a bit but don't seem to find the answer.  So:
What is the key to understanding the Classes, what they're called and what they do, so that one can be relatively productive?  Does this come by osmosis?
It must be something like a dictionary....
Or, if the proper term is other than "Classes", can you enlighten me a bit please?
0
If i want to create a database of students Information using structure and store in FILE,how to count how many student's information are there in that FILE using C language?
0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "assignment.h"
#include "list.h"
void ex7() {
    node_t *a=Initialize('1');
    node_t *b=NULL;
    PrintList(a);
    InsertFirstList(&a, 'V');
    InsertFirstList(&a, 'M');
    PrintList(a);
    InsertLastList(&a, 'C');
    PrintList(a);
    SplitList(&a, &b, 2);
    PrintList(a);
    PrintList(b);
    DeleteFirstList(&a);
    PrintList(a);
    InsertLastList(&a, 'G');
    DeleteLastList(&b);
    PrintList(b);
    InsertLastList(&b,'0');
    PrintList(b);
    InsertLastList(&b, '1');
    PrintList(b);
    MergeList(&a,&b);
    PrintList(a);
    char target='G';
    printf("Count '%c': %d\n",target, SearchList(&a,target));
    target='1';
    printf("Count '%c': %d\n",target, SearchList(&a,target));
    FreeList(&a);
}
node_t *Initialize(char ch) {
    node_t *head;
    head=(node_t*)calloc(1,sizeof(node_t));
    if(head==NULL){
      fprintf(stderr,"Failed to assign memory!\n");
      exit(-1);
    }
    head->next=NULL;
    head->ch=ch;
    return head;
}
void PrintList(node_t *head) {
    node_t *temp=head;
    printf("***Print Linked List***\n");
    while(temp!=NULL) {
      printf("%c ",temp->ch);
      temp=temp->next;
    }
    printf("\n****Print Finished****\n\n");
}
void FreeList(node_t **head) {
    node_t *tmp=NULL;
    node_t *pHead=*head;
    while(pHead->next!=NULL) {
      tmp=pHead;
      pHead=pHead->next;
      free(tmp);
    }
    free(pHead);
}
bool …
0
The  following  code  is  for  gps  gsm  module.The  compiled  hex  code  is  pushed  to  microprocessor.
While  compiling the  below code  we  get  unknown  variable  error  for  following  variables UCZS0, UCZS1
Please  guide  us  for  same.

//GPS and GSM Based Vehicle tracking system
#define F_CPU 12000000			//12Mhz
#include <avr/io.h>			//Header file for AVR device specific I/O Definitions.
#include <avr/pgmspace.h>		//Header file for incorporating program space string utilities.
#include <util/delay.h>			//Header file for incorporating delay routines.
#include<inttypes.h>


#define USART_BAUDRATE 9600
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)

void WaitMs(unsigned int ms);		

void usart_init();
unsigned int usart_getch();
void usart_writech(unsigned char data);
void usart_message(unsigned char *var);

unsigned char value,i,lati_value[9],lati_dir, longi_value[10], longi_dir, final_message[30];
unsigned char deg = 0xB0;

int main()
{

DDRC=0x00;
PORTC=0xff;

    usart_init();

    while(1)
	{
	 a:
	 value=usart_getch();
	 if(value=='$')
	 {
		
	value=usart_getch();
		if(value=='G')
	{
	value=usart_getch();
	if(value=='P')
	{
	value=usart_getch();
	if(value=='G')
	{
				
	value=usart_getch();
	if(value=='A')
	{
	value=usart_getch();
	if(value==',')
	{
	value=usart_getch();
	while(value!=',')
	{
	value=usart_getch();
	}
	
	for(i=0; i<9; i++)
	{

	lati_value[i] = usart_getch();

	}
	value = usart_getch();
	
	lati_dir=usart_getch();
	

Open in new window

0
In this article I will show you how to solve Class A, B, C, subnet based on CCNA and Network+ questions. keep in mind that these exercises will not only show you how to practice, but as well how to have a quick response of how to subnet without many math. Enjoy it.
0
My Code:

#include <stdio.h>

int main(int argc, char *argv[]){
  char line1[128];
  char line2[128];
  char line3[128];
  char rem_text[128];
  FILE *f;

  f = fopen((argv[1]), "r");
  if (!f) {
     printf("error");
  } else {
      fscanf(f, "%127[^\n]\n%127[^\n]\n%127[^\n]\n%127[^\n] ", line1, line2,line3, rem_text);
      printf("1:%s\n", line1);
      printf("2:%s\n", line2);
      printf("3:%s\n", line3);
      printf("4:%s\n", rem_text);
      fclose(f);
  }

  return 0;
}

Open in new window

The Program works almost as expected, except for one detail. What it is supposed to do is, take the first three lines of a file and store them in individual variables. (which works) but then I would like to store the entire remaining bit of the file into its own variable. How do I do that? Thanks in advance

If for example my test.txt file contains:
`Kapitel 1`
`chapter_21.txt`
`chapter_42.txt`
`'Would you tell me, please, which way I ought to go from here?'
'That depends a good deal on where you want to get to,' said the Cat.
'I don't much care where -' said Alice.
'Then it doesn't matter which way you go,' said the Cat.
'- so long as I get SOMEWHERE,' Alice added as an explanation.
'Oh, you're sure to do that,' said the Cat, 'if you only walk long enough.'`

I would like to store` Kapitel 1` as `Title`

`chapter_21.txt` as `chapter_a`

`chapter_42.txt` as `chapter_b`

and

`'Would you tell me, please, which way I ought to go from here?'
'That depends a good deal on where you want to get to,' said the Cat.
'I don't much care where -' said Alice.
'Then it doesn't matter which way you go,' said the Cat.
'- so long as I get SOMEWHERE,' Alice added as an explanation.
'Oh, you're sure to do that,' said the Cat, 'if you only walk long enough.'` as `rem_text`
0
I have the following code:

#include<stdio.h>
char checkInput0(void);

int main() {
  char output;
  output = checkInput0();
  printf("The output is %c", output);
}

char checkInput0(void){
  char option0 = '\0',check0;
  char c;
    
  do{
    printf("Please enter the your choice of A or B: ");
    scanf("%c %c",c ,option0);  
    if(c || option0 != 'A' && 'B' ){
      while((check0 = getchar()) != 0 && check0 != '\n' && check0 != EOF);
      printf("[ERR] Please enter A or B.\n");
    }else{
      break;
    }
  }while(1);
  return option0;
}

Open in new window


and it prompts the user to input something but regardless of the input, I get a segmentation fault.
What I would like the program to do is to Prompt the user to Please enter  your choice of A or B: and if the User enters an A or B it would output: The output is <Their choice>. anything else is entered it should print the following message: [ERR] Please enter A or B.\n.
I can't seem to get it to work.
All help Will be greatly appreciated.
Thanks in advance
0
Concerto's Cloud Advisory Services
LVL 5
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Hi,

I am developing an application for "Bus Driver" where one of important feature is to calculate Odometer inside Android app itself.

Problem Statement : My odometer calculation is working on Google Nexus 10" Tablet and but it is not working on Acer Iconia 10" Tablet.

I have used different method to calculate distance between two different (Latitude, Longitude)

Method 1 : Haveshine Formula
double dlon = Math.toRadians((vCurrent_lon - vLast_lon));
                        double dlat = Math.toRadians(vCurrent_lat - vLast_lat);

                        Log.i("CalcDistance ", " 2 ");

                        double a = Math.pow(Math.sin(dlat / 2), 2) + Math.cos(Math.toRadians(vCurrent_lat)) * Math.cos(Math.toRadians(vLast_lat)) * Math.pow((Math.sin(dlon / 2)), 2);
                        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

                        double vRADIUS_OF_EARTH = 3961;

                        //vDistanceBetweenTwoLocation = 3961 * c;
                        vDistanceBetweenTwoLocation = vRADIUS_OF_EARTH * c;

                        //================= Rounding Odometer upto 02 digits ==================================
                        Lib_Yukti_Common_Util vLib_Common = new Lib_Yukti_Common_Util();
                        vDistanceBetweenTwoLocation = vLib_Common.Round(vDistanceBetweenTwoLocation);
                        //====================================================================================
Method 2  : distanceTo

public static final float calculateDistanceTo(Location fromLocation, Location toLocation) {
    return fromLocation.distanceTo(toLocation);
}



Thanks in Advance
0
HI!
I was going to work with sounds in C. I just wanted to know if this is possible to write my own "library" with the standart libraries of C
as i don`t want to obey any rules of sound libraries out there like OpenAl, PortAudio, BASS etc. I really want to do some work by myself which handles just microphone of my laptop, record  voice, keep it in a "buffer" and play it, that`s all. Nothing else.
Can you guys PLEASE help, where and how to start sharing your experience with me?
Any suggestions are very much apprecieted!!!
0
I have a friend who wants to learn to make video games.

I was wondering what to teach him , I was thinking of starting out with Dennis Ritchie’s “The C Programming language”

He wants to make a game within the next two years. That’s his goal.
0
Hello,

Can someone tell me why I am getting Lvalue required error in the getsmtdata function at the lines where I am trying to set the Attribute name ?

struct Attribute
{
char id;
char name[40];
char status[2];
char value;
char worst;
char raw[6];
};

struct SmartData
{
struct Attribute Attributes[30];
char ExecutionStatus;
};

void getdsmtdata(struct SmartData *smtdata, char *fn)
//This function opens the smtdata file and extracts the attribute data.
{

FILE *input;
char junk;
int count;

printf("in getdinfo(), fn = %s", fn);
//ch = getch();
if((input = fopen(fn, "rb")) != NULL)
	{
		fseek(input, 2, SEEK_SET);

	  for(count = 0; count<30; count++)
	  {
			junk = fgetc(input);
			switch(junk)
			{
				case 1:
					smtdata->Attributes[count].name = "Read Error Rate";
					break;
				case 2:
					smtdata->Attributes[count].name = "Throughput Performance";
					break;
				case 3:
					smtdata->Attributes[count].name = "Spin Up Time";
					break;
				case 4:
					smtdata->Attributes[count].name = "Start/Stop Count";
					break;
				case 5:
					smtdata->Attributes[count].name = "Reallocated Sector Count";
					break;
				case 7:
					smtdata->Attributes[count].name = "Seek Error Rate";
					break;
				case 8:
					smtdata->Attributes[count].name = "Seek Time Performance";
					break;
				case 9:
					smtdata->Attributes[count].name = "Power On Hours";
					break;
				case 10:
					smtdata->Attributes[count].name = "Spin Retry Count";
					break;
				case 12:
					

Open in new window

0
I have written down a simple c program related to a medical store which is saving medicine name, dose, stock and where it is stored in a rack. Here is a code.

#include<stdio.h>
#include<string.h>
#include<dirent.h>
#include<stdlib.h>

// Global variable
char *databasePath;

/* function declaration */
void InitConfiguration(FILE *fWrite, FILE *fRead);
void GetUserName();
void ShowMenu();
struct Medicine GetMedicine();
void SearchMedicine(FILE *fWrite, FILE *fRead);
void AddCart(FILE *fWrite, struct Medicine medicine);
void UpdateMedicineStock(FILE *fWrite, struct Medicine medicine);
void AddMedicine(FILE *fWrite);
void SaveMedicine(FILE *fWrite, struct Medicine medicine);
void ConvertToLowerCase(char* string);
struct Medicine SearchMedicineInDatabase(FILE *fRead, struct Medicine medicine);
char* GetStringFromInt(int value);
char* GetStringFromLong(long value);

struct MedicineInfo
{
    long int cupboardNo;
    long int rackNo;
    long int boxNo;
};

struct Medicine
{
    char name[50];
    char dose[15];
    long int stock;
    struct MedicineInfo medicineInfo;
};

void main()
{
    FILE *fWrite, *fRead;
    InitConfiguration(fWrite, fRead);

    // Show welcome message and get user's name.
    GetUserName();
    ShowMenu(fWrite, fRead);

    getch();
    free(databasePath);
}

void ConvertToLowerCase(char *string) {
    int i;
    for (i = 0; i < strlen(string); i++)
    {
        if (string[i] >= 'A' && string[i] <= 'Z') {
            string[i] = string[i] + 32;
 

Open in new window

0
So i have a program which filters a file containing "emails" in a single line, i link you to the exercise (it is a pdf) https://training.olinfo.it/#/task/ioit_spam/statement so my problem is that it doesn't accomplish all of the 4 tasks but from my tests (i've created a file with 1000 emails) it should correctly and pass all of its cases. i don't know if it's a problem of the corrector on the site (you need to register to test the program) but i link here the scoring (it should score 100 in theory) it might be a problem of the corrector? https://imgur.com/a/QmeY5 and the source file is this https://pastebin.com/iVPXUjxb
Thanks to everyone answering i hope i've made the question clear, the program works in my machine, it can even scan 10000 emails if i'd want to, infact i've tried filtering a 8mb file containing 1000 emails with 1000 words each.
this is the link for the 1000 emails input file https://drive.google.com/file/d/1f9OWkzZ_i9T8s6BcNIq5hXqBogCR2Dcj/view?usp=sharing
0
Hi,

Can an ASP.NET Core app support reading and writing to an access database? BTW this would be a ASP.Core app running on a Linux host.

https://blogs.msdn.microsoft.com/dotnet/2016/11/09/net-core-data-access/

I assume it cant but wanted to double check in case there is another way.

Thanks,

Ward
0
Constraint: Cannot change from C++03 or C-88.

After some online search, I wrote the following program to see how to run a class non-static member function in a pthread via a static member helper. But I got the wrong answer. According to breakpoints, the DoSomething constructor is called once; yet on the 2nd call to doSomething, the initial values of val1 and val2 are set to 100, 200.0, respectively. Granted, I set the members of an internal struct to those values, but not to the class data members.

So, how did that happen; how do I get the args.retval return value from the pthread to end in 5 + 16 = 21 + a multiple of 100.
// header
class DoSomething
{
public:
	DoSomething(int v1, float v2)
		: val1(v1), val2(v2) {
	retval = val2 - val1;
	}

	float* doSomething(int v1, float v2) 
	{
		val1 += v1;
		val2 += v2;
		retval = val1 + val2;
		return &retval;
	}

	struct v1v2_s
	{
		int v1;
		float v2;
		float retval;
	};

	static
    void* DS_helper(void* args)
	{
		int v1 = ((v1v2_s*)args)->v1;
		float v2 = ((v1v2_s*)args)->v2;
		((v1v2_s*)args)->retval = *((DoSomething*)args)->doSomething(v1, v2);
		return args;
	}

private:
	int val1;
	float val2;
	float retval;
};

Open in new window

#include "DoSomething.h"

int main()
{
	DoSomething DS(2, 9);

	DS.doSomething(3, 7);

	DoSomething::v1v2_s args = {100, 200.0};

	pthread_t t;
	pthread_create(&t, NULL, DS.DS_helper, &args);
	pthread_join(t, (void**)&args);
	float res = args.retval;
	return 0;
}

Open in new window


If you could correct the existing code w/o trying to revamp the whole approach, I would appreciate that. (After this is done, then, sure, revamp the whole approach.)
Thanks in advance.
0
What can you benefit from moving Program files from C drive to D drive?

Can you simply move a program file from C: to D: ? In Windows, programs aren’t single files. Often, they’re not even found in a single folder, but rather in dozens of places on the hard drive. The file locations are referenced troughout Windows, which means that moving any of them would cause the program to fail. A simple file-move operation will be unsuccessful. Or will you manually uninstalling them and reinstalling to the D drive? Obviously, it’s not a good way especailly when there are a lot of applications installed on C drive.

Then, what is the best way? I think a third-party data migration software can make things much easier. Such programs are usually capable of dragging and dropping the program files from C drive to D drive safely and quickly. Here, EaseUS Todo PCTrans is recommended for its easy-to-use feature. It can help you transfer data and application to new PC/OS in simple steps in Windows XP/Vista/ 7/8/8.1/10 & Server 2003/2008/2012. All programs files like Facebook, Photoshop, Movie Maker, installed games, etc. that you downloaded from website and regarded as third-party software are supported.

Capture.JPG
ToDo PCTrans
0
 

Expert Comment

by:lpii
I would uninstall and reinstall the programs.  As you said, files are stored in different locations on the C drive, but there are registry entries that are created in every program's installation as well that point to those files and directories.  There maybe software that analyzes the software completely to move it, but if you have the software, I would uninstall and reinstall and pick your D drive and you won't have to worry about the software missing anything.

The advantage of installing on a different drive is if you are running out of room on your C drive, which can cause a slow down in your PCs operation.  If you have the room on the C, I would leave them on C, unless you are trying to organize your drives by having an app drive.

Most transfer software that I have used has been to transfer a complete drive to a new drive, not selected programs.  The transfer software images the disk and transfers it to the new drive (usually done because I've purchased a larger drive for my C drive).
0
 
LVL 15

Expert Comment

by:William Fulks
This reads more like an article than a question. Did you post it in the wrong category?
0
Independent Software Vendors: We Want Your Opinion
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

This isn't really a question; rather, it is a puzzle!!!

Please note, this is NOT an assignment of any kind (check my profile if you are unsure as to my tenure on the site). The idea is to spark some activity in the C/C++ topic areas and to have a little fun. Points will be awarded to the expert(s) who provide the most interesting solution. The idea is to have a little fun, promote discussion and have something interesting to think/talk about.

If this goes well, I plan on doing one of these types of puzzle questions on a regular(ish) basis. I would like to see expert colaboration, rather than experts just going gun-ho to get points. I will consider colaboration between experts when I finally award points. I will close this question once I believe it has reached a natural conclusion (ie. no futher productive activity).

So, let's start with the first puzzle. It's one that has been set many times before and I'd be interested in seeing different approaches to solving it. Please don't just search Google and copy/paste. I promise I will check and any plaigirised answers will be ignored (and probably deleted).

Let's go...

Your job is to write a program that, when run, outputs it's own source code (including comments) such that if the output was fed back into a compiler, built and run it would do exactly the same thing as the original program. The output must be word for word identical to the original source code, such that performing a diff between the original source …
1
Hi all,
I have a question like "How the objects refer the methods in a class"
How they are inter-related in memory....and how they called i.e In single inheritance,how the child class object is calling the parent class method (mechanism that happening in memory)
Ex:-
class parent
{
method1()
{
syso("");
}
}
class child extends parent
{
method2()
{}
Main()
child c = new child();
c.method1()          //-----------> mechanish that happening in memory that, how this object c calling the parent
                                                   method

}
0
I have a C program and when I press ctrl +d right after the program starts, it ends in an infinite loop. Should I press ctrl +d in the course of the program it still gives me an output.

Is there a way to make the program exit without any output when CTRL +D is pressed

This is my code:

         ...
    
       {
            int repeats = 0, counter = 0;
            //Amount of triangles
            repeats = checkInput0();
            int i;
            
            
            // scanf("%d", &repeats);  //num is the user input
            for(i=0; i<repeats; i++)
            {
                //printf("enter first number");
                a_arr[i] = checkInput1();
                //printf("enter first number");
                b_arr[i] = checkInput2();
                //printf("enter first number");
                c_arr[i] = checkInput3();
            }
            
            
            float a_sqrd;
            float b_sqrd;
            float c_sqrd;
            
            
            //     checking if given triangle is valid
            do {
                a = a_arr[counter];
                b = b_arr[counter];
                c = c_arr[counter];
                a_sqrd = a*a;
                b_sqrd = b*b;
                c_sqrd = c*c;
                
                if((a + b > c) && (a + c > b) && (b + c > a))
                {
                    // Checking for special cases of triangle
                    
                    if(a==b && b==c)

Open in new window

0
I have a tcp server running on linux and bound to unix domain socket

I want to allow (give permission ) to another process (running as a user) to connect to the server using the same domain socket.

How Can I achieve that ?


Thanks
0
--------------------Configuration: StockCharter - Win32 Release--------------------
Compiling...
StdAfx.cpp
C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\objbase.h(435) : error C2664: 'memcmp' : cannot convert parameter 1 from 'const struct _GUID *' to 'void *'
        Conversion loses qualifiers
C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\objbase.h(459) : error C2664: 'memcmp' : cannot convert parameter 1 from 'const struct _GUID *' to 'void *'
        Conversion loses qualifiers
C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\memory.h(68) : error C2733: second C linkage of overloaded function '_memccpy' not allowed
        C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\memory.h(68) : see declaration of '_memccpy'
C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\memory.h(69) : error C2733: second C linkage of overloaded function 'memchr' not allowed
        C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\memory.h(69) : see declaration of 'memchr'
C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\memory.h(70) : error C2733: second C linkage of overloaded function '_memicmp' not allowed
        C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\memory.h(70) : see declaration of '_memicmp'
C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE\memory.h(76) : error C2733: second C linkage of overloaded function 'memcmp' not allowed
        C:\Program Files …
0
I wrote the attached code with the intention to get 42 as the output but I instead get an asterisks (*) I know that 42 is the ACII value of an asterisk. Please look at my code and see something I might have missed. The program is in C using the <unistd.h> library, I have to use the unistd.h and not the stdio.h for this code.

[code]
#include <unistd.h>

void      ft_putchar(char c)
{
      write(1, &c, 1);
}

void    ft_putnbr(int nbr)
{
    write(1, &nbr, 1);
}

void      ft_ft(int *nbr)
{
      *nbr = 42;
}

int      main(void)
{
      int a;
      int *ptr;
      char c;

      a = 7;
      ptr = &a;
      ft_ft(ptr);
    ft_putnbr(a);
      ft_putchar('\n');
}
/code]
0

C

22K

Solutions

13K

Contributors

C is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations. By design, C provides constructs that map efficiently to typical machine instructions, so it has found lasting use in applications that had formerly been coded in assembly language, including operating systems as well as various application software for computers ranging from supercomputers to embedded systems. It is distinct from C++ (which has its roots in C) and C#, and many later languages have borrowed directly or indirectly from C.