找到反转到下划线

时间:2018-02-11 05:46:11

标签: c string

我正在编写一个C程序,在找到第一个下划线字符之前反转字符串的一部分' _'

例如: 如果输入是

black_black

输出必须是

kcalb_black

另一个输入,

nounderscore

必须反转整个字符串

erocsrednuon

输入的另一种可能性,

_intact

提供,

_intact

我的代码是

#include<stdio.h>
#include <stdlib.h>

int main()
{
    char stringTillUnderscore[100], stringAfterUnderscore[100], inputString[100];
    int count = 0, counter = 0;
    fgets(inputString, 100, stdin);
    while(inputString[count] != '_') {
        stringTillUnderscore[count] = inputString[count];
        count++;
    }
    for(counter = strlen(stringTillUnderscore) - 1; counter >= 0; counter--) {
        printf("%c", stringTillUnderscore[counter]);
    }
    for(counter = strlen(stringTillUnderscore); counter < strlen(inputString); counter++) {
        printf("%c", inputString[counter]);
    }

}

为什么我的代码不起作用?它只返回垃圾值。

2 个答案:

答案 0 :(得分:4)

您缺少终止字符串

的null

 ....
 count++;
}
stringTillUnderscore[count] = 0;

另外

while(inputString[count] != '_') {

应该是

while (inputString[count] && inputString[count] != '_') {

以防该字符串中没有下划线。

答案 1 :(得分:1)

你忘了把它包括在内     的 string.h中

没有必要包含     的 stdlib.h中

也没有必要声明字符数组      stringAfterUnderscore [100]

工作代码是,

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

int main()
{
  char stringTillUnderscore[100], inputString[100];
  int count = 0, counter = 0;
  fgets(inputString, 100, stdin);
  while(inputString[count] != '_')
    {
      stringTillUnderscore[count] = inputString[count];
      count++;
    }
  for(counter = strlen(stringTillUnderscore) - 1; counter >= 0; counter--)
    {
      printf("%c", stringTillUnderscore[counter]);
    }
  for(counter = strlen(stringTillUnderscore); counter < strlen(inputString); counter++)
    {
      printf("%c", inputString[counter]);
    }
  return 0;
}