i have been trying to make a for loop where at i < j. Variable J takes the length of a string to decide how many loops will happen. This works for the first loop, i have debugged and J does get the value of 3 if i put in a string of 3 characters. The problem is that after the first loop J is reset to the value of 0 and i cant seem to figure out why that is. Can anyone help me? Id still call myself a beginner so any advice on code would be appreciated even if its not about my specific question.
#include <ctype.h>
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
string prompt = get_string("Give me a word: " );
int j = strlen(prompt);
char word[] = "";
for (int i = 0; i < j; i++)
{
strcat(word, "p");
}
printf("%s\n", word);
}
char word\[\] = "";
I belive that it is typo and it should be
char word[] = "";
You define a char
array having one element (null terminating character).
When you strcat(word, "p");
you invoke undefined behaviour as you write outside the array bounds. Your array has to be big enough to accommodate all the characters and null terminating character.
int main(void)
{
string prompt = get_string("Give me a word: " );
size_t j = strlen(prompt);
char word[j + 1];
word[0] = '\0';
for (int i = 0; j != 0 && i < j; i++)
{
strcat(word, "p");
}
printf("%s\n", word);
}