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[] = "";you define an array of only a single element (that element being the string null-terminator character'\0'). You can't append to it, any attempt to do so will lead to undefined behavior. Set a large enough size of the array and it should start working, like e.g.char word[j + 1] = "";char word[j + 1] = "";will not workchar word[j + 1]; word[0] = '\0';. To explain for other readers: Variable length arrays can not be initialized in place of definition. Setting the first character to the string terminator allows it to be used as a destination forstrcat. As for the size, the code addsjnumber of'p'characters, plus one for the terminator at the end.