简体   繁体   English

如何使用c中的数组输入来打印字符串中的部分单词?

[英]How to print part of words in string by input using array in c?

The C program below print the third until last character of 80 words strings 下面的C程序打印第三个字符,直到80个字符串的最后一个字符

#include <stdio.h>

int main(void) {
  char a[] = "computer";
  char start = 3;
  char length = 7;

  printf("%.*s\n", length, a + start);

  return 0;
}

the output : 输出 :

puter

how to write in c code for print "n" last character of string 如何用c代码写入字符串的最后一个字符“n”

ex: 例如:

  • string : "this computer" 字符串:“这台电脑”

  • n inputed by scanf ex: 5 n由scanf ex输入:5

it will print to console 它将打印到控制台

"puter" “帕特”

Change 更改

char start = 3;
char length = 7;

to

int start;
int length;

and do as follows; 并做如下; I used a pointer in this program. 我在这个程序中使用了一个指针。

#include <stdio.h>
#include <string.h>

int main(void) {
    char a[] = "this computer";
    int start;
    int length;
    char *ptr = a; // Initializing ptr with first element of string literal.

    length = strlen(a); // Calculating the length of string literal
    scanf("%d", &start);

    if(start > length)
        start = length;

    ptr += length - start; // Adding the desired last number of elements/characters to be printed to the address ptr points to. 

    printf("%s\n", ptr);

    return 0;
}

Input: 输入:

5  

Output: 输出:

puter

In case the string, of which you're trying to print a substring is not hard-coded, you'll need to determine its length, too: 如果您尝试打印子字符串的字符串不是硬编码的,那么您还需要确定其长度:

char some_string[] = "this computer";
char *out_ptr = &some_string;
int length, offset;
length = strlen(some_string);
scanf("%d", &offset);
out_ptr += length - offset;
printf("%s", out_ptr);

This allows you to pour this into a neat little function: 这允许你把它倒入一个整洁的小功能:

void print_substr(char *str_ptr)
{
    int offset, len = strlen(str_ptr);
    scanf("%d", &offset);
    if (offset > len) offset = len;
    str_ptr += len - offset;
    printf("%s\n", str_ptr);
}

And it's dead-easy to use, as you can see here, on this code-pad 在这个代码板上 ,你可以看到, 很容易使用

Here's how I would do it: 我是这样做的:

void print_substring(const char *string, unsigned int start, unsigned int length)
{
  const size_t len = strlen(string);

  if(start >= len)
    return;
  if(start + length > len)
    length = len - start;
  for(; length != 0; --length)
    putchar(string[start++]);
  putchar('\n');
}
 #include <stdio.h>

int main(void) {
  char a[] = "computer";
  char start = 3;
  char length = 8;
  int n;
  scanf("%d",&n);
  printf("%.*s\n", n,&a[length-n]);

  return 0;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM