我一直在尝试做一个for循环,其中在i <j。变量J采用字符串的长度来决定将发生多少次循环。这适用于第一个循环,我已经调试过了,如果我输入一个3个字符的字符串,J确实得到了3的值。问题是,在第一次循环后,J被重置为0的值,我似乎无法弄清楚为什么会这样。有人能帮帮我吗?我仍然称自己是一个初学者,所以任何关于代码的建议都将受到赞赏,即使它不是关于我的具体问题。
#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);
}
字符串
1条答案
按热度按时间s8vozzvw1#
char word\[\] = "";
我相信这是错字,它应该是字符串
您定义了一个
char
数组,它有一个元素(空终止字符)。当你strcat(word, "p");
你调用undefined behavior当你写数组边界外。你的数组必须足够大,以容纳所有的字符和空终止字符。型
https://godbolt.org/z/5GPPse96K