'Two for loops only one is showing
This program is not recognizing the second for loop. It stops after printing the length. Looking for this result: 41WH( Size of Array: 5 4 - Yes, this is a number 1 - Yes, this is a number W - Yes, this is an alphabet. H - Yes, this is an alphabet. ( - No, this is not a number or alphabet
#include <stdio.h>
int main()
{
char misc[5];
misc[0] = '4';
misc[1] = '1';
misc[2] = 'W';
misc[3] = 'H';
misc[4] = '(';
misc[5] = '\0';
size_t length = sizeof(misc)/sizeof(misc[0]);
for(int a; a < length; a++)
{
printf("%c", misc[a]);
}
printf("\nSize of Array: %d\n", length);
for(int i; i<length; i++)
{
if (misc[i] >= '0' && misc[i] <= '9')
{
printf("%c - ", misc[i]);
printf("Yes, this is a number\n");
}
else if ((misc[i] >= 'a' && misc[i] <= 'z') || (misc[i] >= 'A' && misc[i] <= 'Z'))
{
printf("%c - Yes, this is an alphabet.\n", misc[i]);
}
else
{
printf("%c - ", misc[i]);
printf("No, this is not a number or alphabet\n");
}
}
return 0;
}
Solution 1:[1]
You had one out of bounds error (off-by-one) for the length of the Array.
Also you did not initilize the int a with 0. The code below works for me.
#include <stdio.h>
int main()
{
size_t length = 6;
char misc[length]; // 6 not 5
misc[0] = '4';
misc[1] = '1';
misc[2] = 'W';
misc[3] = 'H';
misc[4] = '(';
misc[5] = '\0'; // not out of bounds anymore
for(int a = 0; a < length; a++) // Initilize with 0 here
{
printf("%c", misc[a]);
}
printf("\nSize of Array: %d\n", length);
for(int i = 0; i<length; i++) // Initilize with 0 here, too
{
if (misc[i] >= '0' && misc[i] <= '9')
{
printf("%c - ", misc[i]);
printf("Yes, this is a number\n");
}
else if ((misc[i] >= 'a' && misc[i] <= 'z') || (misc[i] >= 'A' && misc[i] <= 'Z'))
{
printf("%c - Yes, this is an alphabet.\n", misc[i]);
}
else
{
printf("%c - ", misc[i]);
printf("No, this is not a number or alphabet\n");
}
}
return 0;
}
Solution 2:[2]
Your code has undefined behaviour. That is practically the end of the explanation.
- (as pointed out by Cediwelli) you access beyond the highest legal index 4 of the array
misc - you are using
iwithout ever initialising it
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Yunnosch |
