【发布时间】:2011-07-14 06:23:29
【问题描述】:
今天我试图对 char * 字符串友好...但似乎我失败了 :) 每次我调用 strcmp/strncmp/strcpy 函数时,我的源代码都会损坏......
这里是sn-p
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
int UID;
char name[20];
char surname[20];
};
char * getString(int minChars, int maxChars);
struct student * myStud;
int main(int argc, char** argv) {
myStud = (struct student*)malloc(sizeof(struct student));
while(1)
{
printf("\nEnter new name: ");
strcpy(myStud->name,getString(1,19));
printf("\n The values is now %s",myStud->name);
}
return (EXIT_SUCCESS);
}
char * getString(int minChars, int maxChars)
{
char string[maxChars+1];
scanAgain:
scanf("%s",&string);
if(strlen(string)<minChars)
{
printf("\nToo few symbols, try again: ");
goto scanAgain;
}
if(strlen(string)>maxChars)
{
printf("\nToo many symbols, try again: ");
goto scanAgain;
}
string[maxChars]='\0';
return(string);
}
输出:
Enter new name: Alekasdasd
The values is now Alekasda�#
Enter new name:
我只是一个初学者,所以它可能非常简单......可能不是。 哦,顺便说一句,使用linux和netbeans作为SDK,gcc作为编译器。
【问题讨论】:
-
写一个小程序来复现问题。 (另外,考虑重组你的程序,这样它就不会是一堆乱七八糟的标签和 goto ......)
-
太棒了!源损坏!希望您不是指程序源 :)
-
首先打开编译器上的警告。这应该让你重新考虑几件事。