C 使用函数返回修改后的字符串

C 使用函数返回修改后的字符串,c,string,C,String,N-编号 s-字符串 C-字符 根据输入的编号N,重写给定的字符串s 如果N>0使用字符C,并将其N次附加到s的末尾 如果N0,它会做它应该做的事情,再加上一些奇怪的字符(所以不会)。适用于N0){ 对于(i=0;i G是一个变量,只能由stringer函数访问,并且您要将其返回到同一个函数 获取() 这是不好的,因为它会使输入字符串缓冲区溢出。例如,如果缓冲区大小为2,并且输入16个字符,则会使str溢出 fgets() 这是安全的,因为您可以通过传递缓冲区大小(包括空的空间)来保证不会使输入

N-编号

s-字符串

C-字符

根据输入的编号N,重写给定的字符串s

如果N>0使用字符C,并将其N次附加到s的末尾

如果N0,它会做它应该做的事情,再加上一些奇怪的字符(所以不会)。适用于N0){ 对于(i=0;i
  • G
    是一个变量,只能由stringer函数访问,并且您要将其返回到同一个函数
  • 获取()

    这是不好的,因为它会使输入字符串缓冲区溢出。例如,如果缓冲区大小为2,并且输入16个字符,则会使str溢出

    fgets()


    这是安全的,因为您可以通过传递缓冲区大小(包括空的空间)来保证不会使输入字符串缓冲区溢出。

    代码中有两个错误

    1) 您需要以null结尾字符串

    for(i=0;i<N;i++) T[i]=C;
    T[i] = '\0' // you forgot this
    
    for(i=0;i<strlen(s);i++)
       if(isalnum(s[i])) G[k++]=s[i];
    G[k]= '\0'; // again, terminate the string with 0
    

    for(i=0;iyou应该使用fgets(s,20,stdin);而不是get。
    return G;
    return局部变量。我认为@BLUEPIXY调用了它。另一点,查找isalnum(3)而不是冗长的条件(根据字符集,可能不起作用).由于缺少括号,我不理解整个代码,您可以从中开始。任何方法都不要忘记释放指针。@Michi,这会让事情变得更糟。