为什么下面的代码是垃圾值?
在这里,我试图逐个字符地从用户那里获取一个字符串作为输入。在下面的代码中,我从用户那里获得了输入并存储在 string[] 数组中,然后为了执行一些其他操作,我将相同的内容存储在另一个名为 temp_string[i] 的数组中。但令人惊讶的是,我在输出中得到垃圾值。而且使用 strlen
计算的长度也不正确。谁能看看这段代码并解释出什么问题了?
#include<stdio.h>
#include<stdio.h>
int main()
{
char ch;
int i = 0, j = 0;
int length = 0;
int lengthsb = 0;
char string[100];
printf(" Enter the string to divide\n ");
while(ch != '\n')
{
ch = getchar();
string[i] = ch;
i++;
}
char temp_string[i];
printf("%s", string);
i = 0;
while(string[i] != '\n')
{
temp_string[i] = string[i];
i++;
}
length = strlen(temp_string);
printf("Entered string is %s and its length is %d\n", temp_string, length);
}
最佳答案
您忘记在字符串末尾添加空值。 C 字符串以 null 结尾,这意味着 c 字符串中的所有操作都需要一个 null 来标记字符串的结尾,包括 strlen 等函数。
您只需添加即可实现:
string[i] = '\0';
填充字符串后。
另一件事,如果用户输入大于 100 的字符串会怎样?验证这些情况下的输入是很好的,否则你会得到缓冲区溢出。
关于c - 为什么下面的代码给出了垃圾值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25317409/