c-如何将用户输入值放入strncpy



因此,我正在尝试编写一个strncpy函数。我希望用户输入要从源复制的字符数。我做错了什么,但我不明白是什么。这就是我试图做的:

#include <stdio.h>
#include <string.h>
#define ARR_SIZE 20
int main() {
char string[ARR_SIZE];
int n, m;
char s1[4], s2[4], nstr[m];
printf("Enter the string:");
gets(string);
printf("The length of the string is: %ldn", strlen(string));
strcpy(s1, s2);
printf("The original string is: %sn", string);
printf("The copy of the original string is: %sn", string);

printf("How many characters do you want to take from this string to create another string? Enter: n");
scanf("%d", &n);
strncpy(nstr, s1, m);
printf("%sn", nstr);
}

(在顶部,我尝试了一些strlenstrcpy函数。(编辑:我完全忘了写问题出在哪里了。问题是我无法在代码中获得名为nstr的新字符串。尽管我把它打印出来了。

首先,整个代码只是一种糟糕的做法。

无论如何,这是我对您的代码的看法,它将输入字符串的n个字符复制到string_copy

#include <stdio.h>
#include <string.h>
#define ARR_SIZE 20
int main() {
char string[ARR_SIZE];
int n;
printf("Enter the string:");
gets(string);
printf("The length of the string is: %ldn", strlen(string));
printf("The original string is: %sn", string);
printf("How many characters do you want to take from this string to 
create another string? Enter: n");
scanf("%d", &n);
if(n > strlen(string)){
n = strlen(string);
printf("you are allowed to copy maximum of string length %dn", n);
}
char string_copy[n];
strncpy(string_copy, string, n);
printf("%sn", string_copy);
}

请注意,使用不推荐使用的函数(如gets(((是不安全的。请改用scanf((或fgets((。

请参阅为什么不应该使用gets((

相关内容

  • 没有找到相关文章

最新更新