[英]How I can fix this problem when print string in C?
我的代碼有問題。
#include <stdio.h>
#include <string.h>
#define size 100
int main()
{
char s1[size],s2[size],s3[size];
int i,j,k,p;
printf("s1: ");fgets(s1,size,stdin);
printf("s2: ");fgets(s2,size,stdin);
if (s1[strlen(s1)-1]=='\n')
s1[strlen(s1)-1]='\0';
if (s2[strlen(s1)-1]=='\n')
s2[strlen(s2)-1]='\0';
printf("Insert position: ");scanf("%d",&p);
j=0;
for (i=p;i<strlen(s1);i++)
{
s4[j]=s1[i];
j++;
}
printf("s3: %s\n", s3);
}
當我運行這個文件時。 這有錯誤的結果。 我不知道為什么 s3 是“a”。 任何人都可以幫助我。 非常感謝。
對於初學者,您正在填充字符數組s4
。
for (i=p;i<strlen(s1);i++)
{
s4[j]=s1[i];
j++;
}
但是正在輸出字符數組s3
printf("s3: %s\n", s3);
as 和數組s4
不包含字符串。:) 數組s3
未初始化並包含不確定的值。
你至少需要這樣寫
j=0;
for ( size_t n = strlen( s1 ); i < n; i++ )
{
s3[j]=s1[i];
j++;
}
s3[j] = '\0';
printf("s3: %s\n", s3);
您尚未聲明 s4,但您使用的是 s4 而不是 s3。 並且還打印 s4。
s4[j]=s1[i];
做這個
s3[j] = s1[i];
輸出:
s1: hello
s2: wo
Insert position: 3
s3: lo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.