我在使用字符串时遇到了一些未知的问题。只有在这种算法的实例中才会发生这种情况:
Source.c
#include <stdio.h>
#include <string.h>
main()
{
int cur, max;
char ast[32];
printf("Enter the triangle's size: ");
scanf("%d", &max);
for(cur = 1; cur <= max; cur++)
{
strcat(ast, "*");
if(cur == 1)
{
printf("\n");
}
printf("%s\n", ast);
}
getch();
}这种情况会发生:
概述:用输入大小的星号(*)创建三角形的程序。
输入三角形的大小:5
[美]常春藤☼ⁿbv░↓@*
[美]常春藤☼ⁿ░↓@**
[美]常春藤☼ⁿbv░↓@*
[美]常春藤☼ⁿ░↓@**
电话:@*@
它应该是这样的:
输入三角形大小:5
*
**
***
****
*****我也不知道原因。有人能帮忙吗?)
发布于 2014-01-19 10:53:13
您的字符串ast未初始化,因此它将包含垃圾,并将其附加到其中。
首先,您需要一个以零结尾的字符串,将第一个字符设置为'\0'。
发布于 2014-01-19 10:55:57
使用
ast[0]=0;将修复它-也就是初始化它。
发布于 2014-01-20 20:42:56
选择使用snprintf:
#include <stdio.h>
#include <string.h>
#define MAX 32
int main(void)
{
unsigned int cur, max;
char ast[32];
printf("Enter the triangle's size: ");
scanf("%d", &max);
if (max > MAX)
return -1;
for(cur = 1; cur <= max; cur++)
{
if(cur == 1)
{
snprintf(ast,2,"*");
printf("\n");
}
else
strlcat(ast, "*",cur + 1);
printf("%s\n", ast);
}
return 0;
}https://stackoverflow.com/questions/21215771
复制相似问题