这是我的源代码:
#include <stdio.h>
#include <string.h>
void main()
{
int broj_znakova,i=0;
char niz1[81],niz2[81];
printf("Enter something, for end Ctrl/c \n\n");
while(fgets(niz1,81,stdin)!=NULL)
{
continue;
}
printf("You just enter: %s \n",niz1);
printf("This string is long %d\n",(strlen(niz1)-1));
strcpy(niz1,niz2);
printf("niz2 is %s\n",niz2);
if(strcmp(niz1,niz2)==0)
{
printf("niz1 and niz2 is same\n");
}
else
{
printf("niz1 != niz2\n");
}
while(niz1[i]!='\n')
{
if(niz1[i]==' ')
{
broj_znakova ++;
i=i+1;
}
}
printf("Spaces in string = %d\n",broj_znakova);
}
当我按下Ctrl / c我有一堆奇怪的字符时,有人可以帮忙吗? 我谷歌有关潮红的东西,但我是新的:)
答案 0 :(得分:1)
niz2
的内容未初始化。它将导致未定义的行为。也许您打算将niz1
复制到niz2
。如果是,那么您需要反转strcpy
调用中的参数。使用strcpy
,第一个参数是目标。
另请注意,变量broj_znakova
永远不会被初始化。
答案 1 :(得分:0)
C不会在内存中“清零”信息(通常),所以当它分配变量时,你会得到当时内存中的任何内容(无论是否在逻辑上可读,如果你正在打印某些内容)如果没有系统知道这是一个字符串,那么它将继续打印,直到它遇到一个NULL终止字符,如果没有,它会尝试打印内存中的任何内容,这会产生奇怪的字符。
答案 2 :(得分:0)
在这一行
strcpy(niz1,niz2);
我相信你的参数是反向的,它应该是strcpy(niz2,niz1);你看到的奇怪的角色是因为niz2 [81]已经分配了内存,但它并没有填充&#34;。所以,你得到任何神奇的&#39;分配可能包含的数据。也就是说,直到你把东西放进去,或者做memset等等。